1.数组的特点
数组:数组是相同类型数据的有序集合。
数组的四个特点:
1.数组的长度是确定的。数组一旦被创建,它的大小是不可以改变的。
2.数组中元素必须是相同类型。比如一个int类型数组只能放int类型的元素。
3.数组的类型可以是任何数据类型,包括基本类型和引用类型。
4.数组变量属引用类型,数组本身就是对象,数组中的每个元素相当于该对象的成员变量。Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
2.数组的声明,创建和初始化
1.一维数组的声明:(两种)
数组类型[] 数组名;
数组类型 数组名[];
注:
1. 声明一个数组的时候数组并没有被真正的创建,只有在实例化数组对象时数组才被创建,JVM才分配空间,这时才与长度有关。因此,声明数组时不能指定其长度,例如: int a[4]; //非法
比如:int[] s;
声明数组内存分析:声明数组时,只在栈内存中声明了一个引用类型(数组)变量s,堆内存中没有开辟空间。
二维数组的声明:
数组类型 [][] 数组名;数组类型 数组 [][];
2. 创建数组:(创建数组时,必须指定长度。)
基本类型数组创建
public class Test{
public static void main(String args[]){
int[] s; // 声明数组
s = new int[3]; //创建数组(声明,创建可一步完成 int[] s= new int[5])
for ( int i=0; i<3; i++ ) {
s[i] =2*i;
System.out.println(s[i]);
}
}
}
创建数组内存分析:创建数组时,在堆内存中开辟3个长度(指定长度)的空间,把第一个元素的地址赋值给s,并对数组元素进行默认初始化。
引用类型数组创建
class Man{
private int age;
private String name ;
public Man(String name,int age) {
super();
this.name= name;
this.age= age;
}
}
public class Test {
public static void main(String[] args) {
Man[] man; //声明
man = new Man[3];//创建数组
Man m1 = new Man(张三,11);
Man m2 = new Man(李四,22);
man[0]=m1;
man[1]=m2;
}
}
创建数组时内存分析:
数组赋值后内存分析:
3.数组初始化(三种)
1.静态初始化
基本类型数组
in[] a = {1,2,3};
引用类型数组
Man[] mans = {
new Man(张三,11),
new Man(李四,22)
};
2.动态初始化
int[] a = new int[3];
a[0]=1;
a[1]=2;
a[2]=3;
3.数组的默认初始化:
数组创建后,JVM会给该数组分配空间,并对数组的每一个元素默认初始化。
不同类型的默认初始值
数组的界限
1.数组中的元素通过数组下标进行访问,数组下标从0开始。下标的合法区间:[0, length-1]
2.数组的长度为length(元素个数)
4.Arrays类及其常用方法
fill(array,val)方法:把数组中的每一个元素的值用val替换。
BinarySearch(array,val)找到元素在数组中的下标。返回值类型为int
toString(array)把数组转换成字符串进行输出。返回值类型为String
copyof(array,newlength)把一个数组中的元素复制到一个新数组中,新数组的长度为newlength。
sort(array)方法把数组中的元素按升序排序。