数组定义
数组的动态初始化
- 声明并初始化数组:
数据类型 数组名称[] = new 数据类型[长度];
数据类型[] 数组名称 = new 数据类型[长度];
int[] arr = new int[5]; // 推荐
int arr1[] = new int[5];
数组的静态初始化
- 在数组定义的时候就为其设置好了里面的内容
- 简化格式:
数据类型 数组名称[] = {数据1,数据2,数据3... };
- 完整格式:
数据类型 数组名称[] = new 数据类型[]{数据1,数据2,数据..};
int[] arr = new int[]{1,2,3}; // 推荐
int[] arr1 = {1,2,3};
数组内存分析
public class Demo {
public static void main(String[] args) {
int[] data = new int[3];
data[0] = 10;
data[1] = 20;
data[2] = 30;
System.out.println(Arrays.toString(data));
}
}
数组引用传递分析
public class Demo {
public static void main(String[] args) {
int[] data = new int[]{10, 20, 30};
test(data);
System.out.println(Arrays.toString(data));
// [99, 20, 30]
}
public static void test(int[] temp) {
temp[0] = 99;
}
}
对象数组内存分析
public class Demo {
public static void main(String[] args) {
Persion[] per = new Persion[3];
per[0] = new Persion("张三", 20);
per[1] = new Persion("李四", 20);
per[2] = new Persion("王五", 20);
for (Persion p : per) {
System.out.println(p.toString());
}
// name: 张三 age: 20
// name: 李四 age: 20
// name: 王五 age: 20
}
}
class Persion {
private String name;
private int age;
public Persion(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "name: " + name + " age: " + age;
}
}
Arrays 类常用方法
public class Demo {
public static void main(String[] args) {
// 数组遍历
int[] arr = new int[]{1, 2, 3, 4, 5, 6};
System.out.println(Arrays.toString(arr));// [1, 2, 3, 4, 5, 6]
// 数组排序
int[] arr1 = new int[]{5, 2, 8, 3, 19, 4};
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));// [2, 3, 4, 5, 8, 19]
// 数组比较
System.out.println(Arrays.equals(arr, arr1));// false
// 数组查找(二分查找,传入的数组得有序)
System.out.println(Arrays.binarySearch(arr, 4));// 3
}
}
方法可变参数
- 本质上仍然是一个数组
public class Demo {
public static void main(String[] args) {
test(1, 2, 3, 4, 5, 6);
}
public static void test(int... arr) {
System.out.println(Arrays.toString(arr));
// [1, 2, 3, 4, 5, 6]
}
}
参考链接:国内最新JAVA10培训课堂 [by 魔乐科技]