一:数组
数组(Array)是存储多个相同类型数据的容器。标志是一对中括号:[]。
特点:
想要获取数组中的元素,可以用下标来获取,下标如下图,是从0开始的,数组下标的最大值,数组长度-1。
数组的空间是连续的。
创建数组:
动态初始化:指定数组类型[] 数组名=new 数组类型[数组长度];例:int[] a = new int[5];创建数组长度为5的数组。不知道要存的数据用这用。
静态初始化:指定数组的类型[] 数组名=new 数组的类型[数组的长度{数组的值} ;例int[] a =new int[]{1,2,3,4,5};也可以int[] a ={1,2,3,4,5,6,7,8};知道要存的数据用这种。·
静态初始化和动态初始化时相同的,只不过区别在于在第2步的时候,将分配的默认值改为指定的大括号里的值。
public class Test1_hello {
public static void main(String[] args) {
// 静态初始化
char[] hello=new char[] {'h','e','l','l','o'};
char[] hello1= {'h','e','l','l','o'};
// 动态初始化 char类型的默认值为\u0000
char[] hello2=new char[5];
//修改元素的默认值,要结合下标。如果不修改元素,数组元素还是默认值,但是不识别,显示为空格。
hello2[0]='h';
hello2[1]='e';
hello2[2]='l';
hello2[3]='l';
hello2[4]='o';
}
}
常见错误:如果如果遇见,要记得。
数组的长度:
- 用length获取数组的长度。获取格式:数组名.length
- 数组一旦创建,其长度是不可变的。
- 允许存在长度为0的数组。
例子:
public class Test1_hello {
public static void main(String[] args) {
// 静态初始化
char[] hello=new char[] {'h','e','l','l','o'};
char[] hello1= {'h','e','l','l','o'};
// 动态初始化 char类型的默认值为\u0000
char[] hello2=new char[5];
//修改元素的默认值,要结合下标。如果不修改元素,数组元素还是默认值,但是不识别,显示为空格。
hello2[0]='h';
hello2[1]='e';
hello2[2]='l';
hello2[3]='l';
hello2[4]='o';
// System.out.println(hello2);
System.out.println(hello.length);
}
}
结果:
数组的遍历:从头到尾依次获取数组中的元素。数组的遍历利用下标,int i=0;是说从下标为0的数开始,i<i.length是说遍历数组的长度那么多个,i++是说下标的变化依次加1。
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
练习一:输出每月的天数
public class Test2_Array2 {
//輸出每月的天數
public static void main(String[] args) {
int[] days={31,29,31,30,31,30,31,31,30,31,30,31};
for (int i = 0; i < days.length; i++) {
System.out.println(i+1+"月有"+days[i]+"天");
}
}
}
结果:
练习二:存入1-10
public class Test3_Array3 {
/**
* 存入1-10
* */
public static void main(String[] args) {
int[] arr=new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i]=i+1;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
结果:
练习三:创建随机数组
public class Test4_Array4 {
public static void main(String[] args) {
Random rand=new Random();
int[] arr=new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i]=rand.nextInt(100);
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
结果:
数组的工具类Arrays
Arrays.toString(数组):把数组里的数据,用逗号连接成一个字符串。格式:[1, 2, 3, 4, 5]
Arrays.sort(数组):给数组进行排序,对于基本类型的数组使用优化后的快速排序算法,效率高。对引用类型数组,使用优化后的合并排序算法。
Arrays.copyOf(数组,新的长度):把数组复制成一个指定长度的新数组。新数组长度大于原数组,相当于复制,并增加位置。--数组的扩容新数组长度小于原数组,相当于截取前一部分数据。--数组的缩容。
练习一:toString
public class Test5_Arrays1 {
public static void main(String[] args) {
int[] arr=new int[] {1,2,3,4,5};
method(arr);//toString
}
private static void method(int[] arr) {
// TODO Auto-generated method stub
System.out.println(Arrays.toString(arr));
}
}
结果:
练习二:sort
public class Test6_Arrays2 {
public static void main(String[] args) {
int[] a= {9,8,5,1,4};
// 对数组进行排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
}
结果:
练习三:copyOf
public class Test7_Arrays3 {
public static void main(String[] args) {
int[] arr= {1,2,3,5,8};
//复制数组arr,第一个参数是被复制的数组名字,第二个数组是新数组的长度
//如果新数组的长度小于原数组,则为截取。---缩容
//如果新数组的长度大于原数组,多出的长度处的元素用默认值代替----扩容
int[] b=Arrays.copyOf(arr, arr.length);
System.out.println(Arrays.toString(b));
}
}
结果: