4.6Java数组概述和特点
数组的概念
定义:
- 
相同类型数据的有序集合---整型数组、浮点型数组... 
特点:
- 
相同类下的若干数据 
- 
按照一定先后次序排列组合而成 
- 
每个数据称为一个元素 
- 
每个元素可以通过一个索引(下标)来访问它们---每个元素的索引下标是有序的 
数组的三个基本特点:
特点:
- 
长度是确定的。数组一旦被创建,它的大小就是不可以改变的 
- 
其元素必须是相同类型,不允许出现混合类型 
- 
数组类型可以是任何数据类型,包括基本类型和引用类型 
数组的重要特点:
- 
数组就是对象 
- 
数组变量属于引用类型 
- 
数组中每个元素相当于对象的成员变量---默认遵守对象成员变量的规则 
数组的声明
格式:
type[] arr_name; //推荐使用这种方式
type arr_name[];
//创建一个数组
type[] arr_name = new type[分配的空间大小];
int[] arr = new int[5]; //a这个数组能装五个整数,默认值为成员变量的数值默认类型
//还有一种赋值的写法
int[] a = new int[]{1,2,3,4};
//写法比较
int[] arr;
arr = {1,2,3,4}; //编译错误,没有初始化对象!!!
实例:
package cn.Lucifer.arrays;
/**
 * 测试数组的声明
 * @author Lucifer
 */
public class TestNo1 {
    public static void main(String[] args) {
        /*
        声明一个整数的类型的数组
         */
        Integer[] arr01;
        /*
        给数组分配空间,声明数组的长度
         */
        arr01 = new Integer[10];
        String arr02[] = new String[5]; //声明一个String类型的数组
        User[] arr03 = new User[3]; //这个的意思是可以放三个User对象的数组
        /*
        这个时候这个数组是空的,大小也没有定义出来
        再JVM里面这个时候并没有为这个数组分配空间
         */
        /*
        数组的赋值
         */
        arr01[0] = 13; //数组的0号索引位的值为13,内存里面的0号所以的空间的值为13
        arr01[1] = 12; //通过索引下标赋值。索引下标:0,1,2,3,4,5,6,7,8,9
//        arr01[10] = 100; //编译能通过但是执行会报错---下标越界。索引下标的范围:从0开始到数组.length结束
        /*
        循环赋值
         */
        for(int i = 0; i < arr01.length; i++){
            arr01[i] = 10*i;
            System.out.println(arr01[i]);
        }
        /*
        这个length是一个方法
        通过循环初始化数组然后打印出结果
         */
    }
}
//创建一个User类
class User{
    private Integer id;
    private String name;
    /*JavaBean*/
    public void setId(Integer id){
        this.id = id;
    }
    public Integer getId(){
        return this.id;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name = name;
    }
}
声明数组时内存的变化如图:

数组可以是数据类型也可以是对象,如果是对象的话分配空间的意思是该空间内能存储多少个对象
对象数组声明与赋值实例:
package cn.Lucifer.arrays;
import cn.Lucifer.arrays.User;
public class TestNo2 {
    public static void main(String[] args) {
//        User arr03[] = new User[3]; //声明一个User类数组,给数组分配空间,开辟三个空间
        arr03[0] = new User(1001,"Lucifer"); //数组空间的0号索引位创建一个对象
        arr03[1] = new User(1002,"Harden");
        arr03[2] = new User(1003,"James");
//        UserNo2 u2 = new UserNo2();
        //遍历数组
        for(int j = 0; j < arr03.length; j++){
//            System.out.println(u2.toString(arr03[j]));
            System.out.println(arr03.getClass());
        }
    }
}
//新建一个类重写toString方法
class UserNo2{
    /*重写toString方法,不能再一个方法下重写另一个方法*/
    
    It's a lonely road!!!
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号