數組定義
數組的動態初始化
- 聲明並初始化數組:
數據類型 數組名稱[] = 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 魔樂科技]