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,
}
关注公众号,随时获取最新资讯
细节决定成败!
个人愚见,如有不对,恳请斧正!