数组的定义与初始化
数组的创建
大体上有如下三种创建方式:
int[]array1 = {1,2,3,4,5};
int[]array2 = new int[]{1,2,3,4,5};
int[]array3 = new int[5];
一般创建框架就是T[ ]=new T[ ];T是数组中元素的类型,T[ ]是数组类型
如果是double[],则对应new double。
注意 int array[]={1,2,3,4,5}也可以,但不推荐。
new->Java中的关键字
new是关键字,通过new来实例化对象,可以理解为数组是一个新类型,所以要用new,(其实String类也是)具体的会在类和对象中详细展开
初始化
1.动态初始化:在创建数组时直接指定元素个数
int[]array3 = new int[5];
此时数组中默认元素为5个0;
int,byte,short,long型,默认为0;float,默认为0.0f;double默认为0.0;char默认为/u0000(/u是转义字符,表示对应Unicode编码);boolean默认为false。
注意:这是不可以给数组填充指定元素,即int[]array3 = new int[5]{1,2,3,4,5};是错误的,编译无法通过。
2.静态初始化:在创建数组时,不直接指定元素个数,而是直接指定具体数据
int[]array3 = new int[]{1,2,3,4,5};
int[]array3 = {1,2,3,4,5};
编译器会根据{}中元素个数来确定数组长度
数组的使用
数组长度
数组名.lenth就是数组的长度。
数组的遍历
方法一:
for(i=0;i<arr.lenth;i++)
方法二:
for(int x:array){
System.out.println(x);
}
这是通过for-each遍历数组。是for循环的另外一种使用方式
其中,int表示元素类型,array是数组名
方法三:
String ret= Arrays.toString(array);
System.out.println(ret);
将数组转化为字符串
Arrays是一个类,其下有很多方法,其中toString就是将数组转化为字符串;
拓展:Arrays.sort(数组名)可以将数组从小到大排序
注意
数组坚决不可以越界访问,否则编译不通过,而不是简简单单的警告。
数组是引用类型
Java虚拟机运行时的数据区被分成了五份,其中有虚拟机栈和堆
int []arr=new int[]{1,2,3,4,5};
arr是main方法的一个局部变量,局部变量在栈上开辟空间,而关键字new一旦被使用,就会在对上开辟空间
所以上述代码是:new被使用后,在堆上开辟了存放五个整型的空间,这个空间有一个起始地址,这个地址就被存放到了栈上给arr开辟的空间中。
什么是引用类型变量
存放地址的变量就是引用类型的变量,也叫引用。(相当于指针,但不是指针)
也就是说,arr是一个局部变量,它的类型是引用类型,所以提示引用类型的局部变量。简称引用变量
这段代码的结果都是99,2,3,4,5
认识null
因为arr是局部变量,在Java中,局部变量必须初始化,所以当不知道给arr初始化为什么时,就用null
int []arr1=null;
这表示:arr不指向任何对象。