Java | 一维数组

数组

数组是相同类型数据的有序集合,数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中每一个数据称作一个元素,每个元素可以通过一个索引或下标来访问它们。
  数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。

数组的基本特点

1、长度是确定的,数组一旦被创建,它的大小就是不可以改变的。
2、其元素必须是 要同类型,不允许出现混合类型。
3、数组类型可以是任何数据类型,包括基本类型和引用类型。

数组的声明

int[] arr1;        //推荐使用这种声明
String arr2[];

声明的注意整项

1、声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才会分配空间,这时才会与长度有关系。
2、声明一个数组的时候并没有数组真正被创建。
3、构造一个数组,必须指定长度。

int[] arr1 = new int[10];   //实例化数组,并给数组一个长度。给数组分配空间。

数组内存模型:

给数组里面的元素赋值:

arr1[0] = 1;
arr1[1] = 2;

注意:数组的索引是从零开始的,到给的长度的数减一。
数组越界异常:
数组是从0开始的,所以最大的下标是长度减一,如果数组长度大于初始化长度了就会报一个数组越界异常:

也可以用循环给数组赋值:

//初始化数组成员
for(int i =0;i<10;i++){
    arr[i] = i;
}
//通过循环把数组里面的值打印出来
for(int i =0;i<10;i++){
    System.out.print(arr[i] + ",");
    //输出的结果是:0,1,2,3,4,5,6,7,8,9,
}

  前面说过数组里面也可以存引用类型,下面就实验一下:

//创建一个有三空间的数组
User[]  userArr = new User[3];
//初始化数组
userArr[0] = new User(1,"张三");
userArr[1] = new User(2,"李四");
userArr[2] = new User(3,"王五");

//循环打印数组是的值
for(int i = 0;i < userArr.length;i++){
    System.out.print(userArr[i].getName() + ",");
    //输出的结果是:张三,李四,王五,
}

class User{
    private int id;
    private String name;
    
    public User(int id,String name){
        this.id = id;
        this.name = name;
    }
    
    public int getId(){
        return id;
    }
    
    public void  setId(int id){
        this.id = id;
    }
    
    public String getName(){
        return name;
    }
    public void  setName(String name){
        this.name = name;
    }
}

  在数组中存引用对象存的不是对象本身,而是对象的地址。

数组初始化

数组的初始化有三种方式:
1、静态初始化:
除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并且赋值。

int[]  arr = {1,2,3};  //静态初始化一个数组

2、动态初始化:
数组声明与给数组元素赋值的操作是分开的。

//声明一个数组
int[] arr = new int[3];
//为数组中的元素赋值
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;

3、默认初始化:
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也按照实例变量同样的方式被隐式初始化了。

int[] arr1 = new int[2];                //默认值 0
boolean[] arr2 = new boolean[2]; //默认传 false
String[] arr3 = new String[3];      //默认值 null

foreach 循环

增加for循环for-each是JDK1.5新增加的功能,专门用于读取数组或集合中所有的元素,即对数组进行遍厉。

//声时一个数组
int[] arr = {1,2,3,4};
for(int i : arr){
    //循环的时候把arr里面的值赋给临时变量i,然后再输出i
    //foreach循环不能对数组进行操作,只能进行读取
    System.out.print(i + ",");
    //输出的结果:1,2,3,4,
}


关注公众号,随时获取最新资讯

细节决定成败!
个人愚见,如有不对,恳请斧正!

posted @ 2020-03-07 17:42  一点浩然气~  阅读(240)  评论(0编辑  收藏  举报