java 对象数组_java对象数组 - CSDN
精华内容
参与话题
  • Java对象数组的使用

    千次阅读 多人点赞 2019-04-11 22:36:09
    给你一组学生的数据,比如姓名,性别,学号,成绩,然后根据成绩排序,这时你就得用对象数组

    一、Java数组的使用

    对象数组其实和Java的数组类似的,所以要很清楚Java的数组是如何使用的,如果有不懂的可以点下面这个链接Java数组的使用

    二、Java的对象数组

    2.1 问题提出

    为什么会有对象数组呢?假定有这种情况,我们需要录入一个班级同学的姓名,学号,和成绩,然后对成绩进行排序,以降序或者升序进行排列,这个时候就会有人跳出来说,我用一个字符串数组存储姓名,然后再用一个二维数组存放学号和成绩,然后根据程序的高低进行排序。

    2.2 问题解析

    NONONO!今天我们来教大家如何使用对象数组来解决这个问题,对象数组,我们前面学过Java(OOP)编程—(Java OOP编程),想必大家也对面向对象这个词也会稍微有了一些了解,对象数组就是可以存放多种不同的数据类型,然后我们通过对象来调用我们所存放的数据。

    接下来我就来告诉大家如何使用对象数组,完成这个成绩排序的问题

    2.3 问题拆分

    我们可以把问题简化一下,输入五个学生的成绩,然后进行排序打印输出

    1. 先创建一个学生类
    2. 给学生类添加学生的信息—姓名,学号,成绩,然后分别生成有参和无参的构造方法
    3. 再创建一个学生测试类
    4. 创建对象数组,给对象数组申请 5 个空间
    5. 循环录入信息
    6. 根据学生成绩进行排序,然后打印输出
    2.4 代码实现

    创建一个学生类的属性,包括学生的姓名,学号,成绩
    为了方便,我把两个文件放进了同一个包中使用

    package A
    /**
     * @author gorit
     * @date 2019年4月10日
     * 对象数组学生类的创建
     * */
    public class Student {
    	private String name;//学生的姓名
    	private int num;//学生的学号信息
    	private int grades;//学生的成绩
    	
    	//有参的构造方法
    	public Student(String name, int num, int grades) {
    		super();
    		this.name = name;
    		this.num = num;
    		this.grades = grades;
    	}
    
    	//无参的构造方法
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getNum() {
    		return num;
    	}
    
    	public void setNum(int num) {
    		this.num = num;
    	}
    
    	public int getGrades() {
    		return grades;
    	}
    
    	public void setGrades(int grades) {
    		this.grades = grades;
    	}
    
    	public Student(){}
    
    }
    

    然后就是学生类的测试类

    package A
    /**
     * @author gorit
     * @date 2019年4月10日
     * 对象数组的实例讲解
     * */
    import java.util.Scanner;
    
    public class StudentTest {
    	public static void main(String[] args) {
    		System.out.println("请录入学生姓名,学号、成绩:");
    		Scanner in=new Scanner(System.in);
    //		int[] a=new int[3];对照数组的使用
    //  	1、创建对象数组,Student类有三个属性,所以传入数据需要传三个数据
    		Student[] s=new Student[5];//对象数组的创建是一样的
    		for (int i = 0; i < s.length; i++) {
    			//还可以一个个输入s[i].getName,s[i].getNum,s[i].getGrade,一个个输入,用下面的方法更加快捷
    			s[i]=new Student(in.next(),in.nextInt(),in.nextInt());
    		}
    		
    		Student s1=null;//创建一个为空的对象进行数据交换
    		//根据学生的成绩进行排序,这里运用冒泡排序
    		for(int i=0;i<s.length;i++) {
    			for (int j =0; j < s.length; j++) {
    				if(j!=4)//这里必须加上这个条件,不然数字会报出越界的问题
    				if(s[j].getGrades()<s[j+1].getGrades()) {
    					s1=s[j+1];
    					s[j+1]=s[j];
    					s[j]=s1;
    				}
    			}
    		}
    		
    		System.out.println("学生的成绩排名如下\n姓名\t学号\t成绩");
    		for (int i = 0; i < s.length; i++) {
    			System.out.println(s[i].getName()+"\t"+s[i].getNum()+"\t"+s[i].getGrades());
    		}
    		
    	}
    }
    

    程序运行结果
    在这里插入图片描述

    展开全文
  • 1- 对象数组概述 基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3,4} 对象数组:存储的元素为引用类型 Student[] stus=new Student[3]; 解释:: Student代表一个自定义类 Stus数组中stus[0],stus[1],stus[2]...

    1- 对象数组概述

    1. 基本类型的数组:存储的元素为基本类型
      int[] arr={1,2,3,4}
    2. 对象数组:存储的元素为引用类型
      Student[] stus=new Student[3];
      解释::
      Student代表一个自定义类
      Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Student,
      都可以指向一个Student对象

    2- 对象数组案例

    创建一个学生数组,存储三个学生对象并遍历

    /*
     * 自动生成构造方法:
     * 		代码区域右键 -- Source -- Generate Constructors from Superclass...	无参构造方法
     * 		代码区域右键 -- Source -- Generate Constructor using Fields...		带参构造方法
     * 自动生成getXxx()/setXxx():
     * 		代码区域右键 -- Source -- Generate Getters and Setters...
     */
    public class Student {
    	private String name;
    	private int age;
    	
    	public Student() {
    		
    	}
    
    	public Student(String name, int age) {
    		this.name = name;
    		this.age = age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    	
    	
    }
    
    package com.itheima;
    /*
     * 创建一个学生数组,存储三个学生对象并遍历
     * 
     * 分析:
     * 		A:定义学生类
     * 		B:创建学生数组
     * 		C:创建学生对象
     * 		D:把学生对象作为元素赋值给学生数组
     * 		E:遍历学生数组
     */
    public class StudentDemo {
    	public static void main(String[] args) {
    		//创建学生数组
    		Student[] students = new Student[3];
    		
    		//创建学生对象
    		Student s1 = new Student("曹操",40);
    		Student s2 = new Student("刘备",35);
    		Student s3 = new Student("孙权",30);
    		
    		//把学生对象作为元素赋值给学生数组
    		students[0] = s1;
    		students[1] = s2;
    		students[2] = s3;
    		
    		//遍历学生数组
    		for(int x=0; x<students.length; x++) {
    			Student s = students[x];
    			//System.out.println(s);
    			System.out.println(s.getName()+"---"+s.getAge());
    		}
    	}
    }
    

    3- 对象数组的内存图解

    在这里插入图片描述

    展开全文
  • java对象数组

    2019-07-15 16:03:05
    对象数组——非引用数据类型数组 之前所定义的数组都属于基本类型的数组,对象数组往往是以引用数据类型为主的定义,例如:类、接口。 对象数组往往是以引用数据类型为主。 具体使用方法如下: (一)动态初始化 类...

    对象数组

    之前所定义的数组都属于基本类型的数组,对象数组往往是以引用数据类型为主的定义,例如:类、接口。


    对象数组往往是以引用数据类型为主。

    具体使用方法如下:
    (一)动态初始化
    类名称[] 对象数组名称 = new 类名称[长度] ;


    需要标明数组长度

    举例如下:

    1,动态数组初始化
    public class ArrayInitialize{
    	private String name;
    	private int age;
    	//构造方法
    	public ArrayInitialize(String name,int age){
    		this.name = name;
    		this.age = age;
    	}
    	//方法
        public void print(){
    	System.out.println("姓名:"+name+",年龄:"+age);
    	}
    	//主方法
    	public static void main(String[] args){
    		//需要指出数组长度
    		ArrayInitialize[] person = new ArrayInitialize[2];
    		person[0] = new ArrayInitialize("张三",20);
    		person[1] = new ArrayInitialize("李四",21);
    		for(int i = 0;i < person.length;i++){
    			person[i].print();
    		}
    	}
    }
    

    运行结果如下:
    在这里插入图片描述

    (二)静态初始化
    类名称[] 对象数组名称 = new 类名称[长度]{具体内容} ;


    不需要标明数组长度

    举例如下:

    //静态初始化方法
    public class ArrayInitialize{
    	private String name;
    	private int age;
    	//构造方法
    	public ArrayInitialize(String name,int age){
    		this.name = name;
    		this.age = age;
    	}
    	//方法
        public void print(){
    	System.out.println("姓名:"+name+",年龄:"+age);
    	}
    	//主方法
    	public static void main(String[] args){
    		//不需要指出数组长度
    		ArrayInitialize[] person = new ArrayInitialize[]{
    		new ArrayInitialize("张三",20),
    		new ArrayInitialize("王五",21)
    		};
    		for(int i = 0;i < person.length;i++){
    			person[i].print();
    		}
    	}
    }
    

    运行结果如下:
    在这里插入图片描述

    展开全文
  • Java中的对象数组

    千次阅读 2019-05-09 22:05:36
    Java对象数组 在创建后,基本数据类型数组可以直接对数组元素赋值、引用等操作;而自定义对象数组,需要对数组中的每个对象元素独立进行创建,然后才可以对其赋值、引用等操作,如果没有单独对每个对象元素创建,会...

    Java对象数组

    在创建后,基本数据类型数组可以直接对数组元素赋值、引用等操作;而自定义对象数组,需要对数组中的每个对象元素独立进行创建,然后才可以对其赋值、引用等操作,如果没有单独对每个对象元素创建,会导致空指针异常

    1.基本数据类型数组

    数组都要先声明、再创建后使用。基本数据类型数组的声明有以下几种格式(以int类型为例):①int[]array;②int[]array=new int;③int[]array={1,2,3};int[]array=newint[]{1,2,3};以上几种格式对数组内容操作,分为对数组的动态初始化和静态初始化两种形式。

    2.自定义对象数组

    自定义对象数组,它们由同一个类的多个具体实例有序组成。我们熟悉的主方法中的string args接收初始化参数时,参数就是一个典型的对象数组案例。由于其每个元素都是引用数据类型,数组在创建后,必须对每个对象分别进行实例化创建。
    以自定义学生类student为例

    public class Student
      {
          // 成员变量
          private String name;
          private int age;
      
          // 构造方法
          public Student()
          {
             super();
         }
     
         public Student(String name, int age) 
         {
             super();
             this.name = name;
             this.age = age;
         }
     
         // 成员方法
         // getXxx()/setXxx()
         public String getName() 
         {
             return name;
         }
     
         public void setName(String name) 
         {
             this.name = name;
         }
     
         public int getAge() 
         {
             return age;
         }
     
         public void setAge(int age) 
         {
             this.age = age;
         }
     
         @Override
         public String toString() 
         {
             return "Student [name=" + name + ", age=" + age + "]";
         }
     }
    
     public class Practice 
     {
         public static void main(String[] args)
       {
            // 创建学生数组(对象数组)。
            Student[] students = new Student[5];
             // for (int x = 0; x < students.length; x++) 
            // {
             //         System.out.println(students[x]);
             // }
           //     System.out.println("---------------------");
    
           // 创建5个学生对象,并赋值。
    	 	 Student s1 = new Student("小一", 27);
    	     Student s2 = new Student("小二", 30);
    	     Student s3 = new Student("小四", 30);
    	     Student s4 = new Student("小五", 12);
    	     Student s5 = new Student("小六", 35);
    
           // 将对象放到数组中。
           students[0] = s1;
           students[1] = s2;
           students[2] = s3;
           students[3] = s4;
           students[4] = s5;
          // 遍历
           for (int x = 0; x < students.length; x++) 
            {
             //System.out.println(students[x]);
                Student s = students[x];
               System.out.println(s.getName()+"---"+s.getAge());
            }
         }
     }
    

    注意:对象数组在经过创建后只建立了栈内存的地址空间,因此在没有对每个数组中的对象创建时输出全部为null,只有经过每个对象实例的独立地开辟堆内存空间,才能正确初始化对象数据。

    展开全文
  • Java数组和对象数组

    2020-07-17 14:28:08
    关于数组的用法,有几种方式: 1.程序员用法 (1)数组的定义 数据类型 数组名[ ]=new 数据类型[大小]; int a[ ]=new int[5]; 说明:这是定义数组的一种方法。为了让大家明白,我画图说明。 楼是存在地球上的,那么...
  • Java对象数组

    万次阅读 多人点赞 2018-09-03 00:24:52
    所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据类型,所以数组里面的每一个对象都是null值,则在使用的时候数组中的每一个对象...
  • java中怎么创建对象数组

    万次阅读 2017-12-23 22:31:21
    学生类: class A{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { ... return a
  • Java判断一个对象是否是数组

    万次阅读 2018-02-05 17:06:35
    Java判断一个对象是否是一个数组类型的可以使用反射获取对象的Class类的isArray方法; 如下代码: /** * * 方法描述 判断一个对象是否是一个数组 * * @param obj * @return * * @author yaomy * @date...
  • JAVA 对象数组必须实例化

    万次阅读 2017-07-18 10:00:20
    再声明对象数组后 ,必须对每个数组成员进行实例化话 才能直接使用,否则报 空指针异常! 例如: //创建一个学生类数组; Student [] stu=new Student[5]; //在使用数组成员时 必须进行实例化 stu[i]=...
  • 1、字符串和对象转换为Json JSONObject jsonStr = JSONObject.fromObject(String); 2、数组转换为Json JSONArray.fromObject(Array[])3、Json转换成字符串,使用toString()方法即可 4、Json转换成...
  • java数组对象吗?

    千次阅读 2018-08-27 19:40:51
    数组对象哦。数组的父类也是Object,每个数组都实现了接口Cloneable and java.io.Serializable。但是数组的类型却不是程序员可见的。但是由于数组也是Object的子类,我们可以打印出数据的类型名。 // Java ...
  • java中的数组对象吗?

    千次阅读 2018-06-23 12:41:30
    简而言之一句话,java中的数组对象java数组的创建使用了关键字new,虽然格式和普通的类创建的方式有所区别。
  • rt 学到对象数组 但是突然想在java数组中用数组保存多个对象 方法有哪些 请教csdn各位大神
  • java数组赋值

    千次阅读 2015-11-13 18:51:48
    数组可以直接相互赋值,而不要求大小一定相同,java数组可以看成是一个对象数组名是对象的引用,而长度是对象的一个属性, 所以在赋值时,不要求长度一致,就想对象之间相互引用时,只要求对象一致,而不管对象...
  • Java中的数组互相赋值

    万次阅读 2018-01-20 18:13:58
    本文探讨Java数组中的赋值问题。在探讨这个问题之前必须先弄懂一件事,Java中的数组到底是什么东西?是类,是对象,还是什么其他奇奇怪怪的东西。答案是:Java中的数组本质上是对象。但是这个对象不是通过某个类...
  • 对象数组 对象数组的元素为引用数据类型,例如类,接口 和基本数据类型一样,对象数组初始化也分为静态初始化,动态初始化两种 对象数组动态初始化 //定义Person类 class Person { public int age; } //...
  • 公共类中: circle[] a=new circle[5]; a[0].radius=2; a[1].radius=10; a[2].radius=8; a[3].radius=4; a[4].radius=12; 公共类之外 class circle{ int radius; } 这样赋值为何不对?
  • 创建一个java对象放到数组当中

    万次阅读 2015-04-11 17:37:40
    class Person { public int age; public double height; public void info() { System.out.println("我的年龄是:" + age + ",我的身高是:" + height); ...public class ReferenceArrayTest ...public static void m
  • java中JSON将对象转换成JSON字符串输出实例
  • java 获取数组元素类型的class对象

    万次阅读 2015-12-23 16:31:10
    每一个类被jvm加载到内存中后,都会生成一个class对象,而且每一个类的实例对象都会有一个引用指针指向该class对象。基于这个class对象我们可以做很多事情,同时它也是整个反射机制的基础。 这里,我只想说一下,...
1 2 3 4 5 ... 20
收藏数 701,602
精华内容 280,640
关键字:

java 对象数组