/*java
* 數組的使用數組
* 一、數據:相同類型數據的有序結合ide
* 二、數組的長度是肯定的,一旦被建立將沒法更改this
* 三、數組中的每一個元素必須相同,不能出現混合類型spa
* 四、元素的數據類型能夠任意,主要包括基本類型和引用類型對象
* 五、數組變量屬於引用變量,數組屬於對象,因此數組是存放在堆中,每一個元素至關於該對象的成員變量。排序
* 索引
* 注意:數組在聲明的時候沒有分配堆空間,不須要指定長度;當數組在實例化的時候,JVM會分配堆空間,因此此時須要指定數組長度it
*/for循環
import java.util.Arrays;;
public class Array_4_21_01 {
public static void main(String[] args) {
int[] array1; //聲明數組變量,不用指定長度
array1 = new int[10]; //數組實例化,須要指定長度
System.out.print("一維數組來啦-> ");
for (int i = 0; i < array1.length; i++) {
array1[i] = i;
System.out.print(array1[i]+" ");
}
System.out.println("");
System.out.println(Arrays.toString(array1));
System.out.println("-------------------------------");
/*
* 元素爲引用類型的數組
*/
Man[] mans; //聲明一個Man引用類型的數組變量
mans = new Man[5]; //實例化這個Man引用類型的數組
Man m1 = new Man(1, 27);
Man m2 = new Man(2, 28);
mans[0] = m1;
mans[2] = m2;
System.out.println("mans的數組值是 "+Arrays.toString(mans));
//靜態初始化
int[] array2 = {2,5,9};
Man[] mans2 = {
new Man(1,29),
new Man(2,30)
};
//動態初始化
int[] array3 = new int[2];
array3[0] = 1;
array3[1] = 2;
System.out.println("array3的數組值是 "+Arrays.toString(array3));
//數組的默認初始化,由於數組的元素至關於類的實例變量,因此數組在被分配空間的時候,每一個元素被按照實例變量的方式被隱式初始化
/*
* int[] a = new int[2]; ->初始化爲[ 0 , 0 ]
* boolean[] b = new boolean[2] ->初始化爲[ false , false ]
* String[] s = new String[2] ->初始化爲[ null , null ]
*/
//數組的copy,使用System.arraycopy這個靜態方法,System.arraycopy(原數組, 原數組起始位置, 目標數組, 目標數組起始位置, 拷貝多少個元素);
String[] s1 = {"Microsoft","IBM","Sun","Oracle","Apple"};
String[] s2 = new String[5];
System.arraycopy(s1, 0, s2, 0, s1.length);
System.out.println("s2這個數組是 "+Arrays.toString(s2));
//用加強型for循環遍歷數組
for (String e : s2) {
System.out.println(e);
}
//數組排序,主要按照元素的應用類型和基本類型分爲兩種,元素爲引用類型的數組排序咱們後面結合容器來理解
//二分法查找
int[] array4 = {1,3,232,23,543,12,59};
Arrays.sort(array4); //使用二分法查找以前,必須先對數組排序
System.out.println("該元素的索引是 "+Arrays.binarySearch(array4,12));
//填充
Arrays.fill(array4, 1, 4,100); //將數組array4從索引位置1開始3位填充爲100
System.out.println(Arrays.toString(array4));
//asList(結合容器理解)
/*
* 多維數組,多維數組的聲明和初始化是從低維到高維的順序進行
*/
//二維數組的靜態初始化
int[][] array5 = {
{1,2,3},
{3,4},
{2,5,8,9}
};
System.out.println("array5這個二維數組的一維數組值是 "+Arrays.toString(array5[0]));
for (int[] e : array5) {
for (int f : e) {
System.out.println(f);
}
}
//二維數組的動態初始化
int[][] array6 = new int[3][];
array6[0] = new int[]{1,2,3};
array6[1] = new int[]{3,4};
array6[2] = new int[]{2,5,8,9};
System.out.println("array6這個數組[2][3]的值是 "+array6[2][3]);
//獲取二維數組的第一維數組長度是 array6.length ; array6[0].length是獲取二維數組第一個數組的長度
}
}
class Man {
private int age;
private int id;
public Man (int id,int age) {
super(); //
this.age = age;
this.id = id;
}
}
/*思考問題
* 一、爲何須要數組這個概念?
*
* 二、說出數組的三種初始化方式。
*
* 三、數組的長度可變嗎?
*
* 四、數組的複製使用哪一個類的方法實現較好?
*
* 五、說說Arrays類的用法
*
*/