java陣列相關
阿新 • • 發佈:2020-09-20
陣列
陣列概述
- 陣列是相同型別資料的有序集合
- 陣列描述的是相同型別的若干個資料,按照一定的先後次序排列組合而成。
- 其中每一個數據稱作一個數組元素,每個陣列元素可以通過下一個下標來訪問它們
陣列宣告建立
- 首先必須宣告陣列變數,才能在程式中使用陣列
- java語言使用new操作符來建立陣列
- 陣列的元素是通過索引訪問的,陣列索引從0開始
- 獲取陣列長度用 arrays.lenth()方法
// 變數的型別 變數的名字 =變數的值 // 陣列型別 int[] nums; // 宣告一個數組 nums= new int[10]; // 建立一個數組 // 給陣列元素賦值 nums[0]=1; nums[1]=2; nums[2]=3; nums[3]=4; nums[4]=5; nums[5]=6; nums[6]=7; nums[7]=8; nums[8]=9; nums[9]=10; // 計算所有元素的和 int sum =0; for (int i = 0; i < 10; i++) { sum +=nums[i]; } System.out.println(sum);
記憶體分析
int[] arrays; // 宣告一個數組,此時陣列在棧中建立,棧中只有一個 arrays的變數。
arrays= new int[10]; // 陣列在堆中建立,並且開闢了10個記憶體空間用來儲存資料,預設值為建立型別
三種初始化
- 靜態初始化: 就是直接給陣列賦值;
例如: in【】 a ={1,2,3} - 動態初始化: 直接確定陣列的上界,但是並沒有賦值,只是開闢了記憶體空間 。此時根據自己的建立型別都有對應的預設值。
陣列的四個基本特點
- 其長度是確定的陣列一旦被建立,它的大小就是不可以改變的
- 其元素必須是相同型別,不允許出現混合型別
- 陣列中的元素可以是任何資料型別,包括基本型別和引用型別
- 陣列變數屬引用型別,陣列也可以看成是物件,陣列中的每個元素相當於該物件的成員變數。陣列本身就是物件,java中物件在堆中,陣列物件也在堆中
多維陣列
- 多維陣列可以看成是陣列的陣列,比如二維陣列就是一個特殊的一維陣列,其每一個元素都是一個一維陣列
int[][] arrays= {{1,2},{2,3,4},{4,5,6},{7,8}};// 定義一個二維陣列 // 利用兩個for迴圈來遍歷數組裡面的資料 for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { System.out.println(arrays[i][j]); }
Arrays類
int[] arrays ={1,2,3,4,5,6,7,8};
// System.out.println(arrays); // 顯示 [I@10f87f48
// 利用工具類Arrays中的tostring方法遍歷整個陣列顯示
// System.out.println(Arrays.toString(arrays));
printstring(arrays);
}
public static void printstring(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
if (i==0){
System.out.print("[");
}
if (i ==arrays.length-1){
System.out.print(arrays[i]+"]");
}else{
System.out.print(arrays[i]+",");
}
}
稀疏陣列
建立稀疏矩陣
public static void main(String[] args) {
// 1 建立一個二維陣列
int[][] array1 =new int[11][11];
array1[1][2]=1;
array1[2][3]=1;
// 輸入原始陣列
System.out.println("請輸入原始陣列:");
printarray(array1);
// 轉化為稀疏陣列儲存
// 獲取有效值的個數
int sum=0;
for (int i = 0; i <11; i++) {
for (int i1 = 0; i1 < 11; i1++) {
if (array1[i][i1]!=0){
sum++;
}
}
}
System.out.println("有效值的個數為:"+sum);
// 建立一個稀疏陣列的陣列
int[][] array2=new int[sum+1][3];
array2[0][0]=11;
array2[0][1]=11;
array2[0][2]=sum;
// 遍歷二維陣列,將非零的值,存稀疏陣列中
int count=0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1.length; j++) {
if (array1[i][j]!=0){
count++;
array2[count][0]=i;
array2[count][1]=j;
array2[count][2]=array1[i][j];
}
}
}
// 輸出稀疏矩陣
printarray(array2);
System.out.println("=============");
// 將稀疏矩陣還原
int[][] array3 =new int[array2[0][0]][array2[0][1]];
// 給其中的元素還原它的值
for(int i = 1; i <array2.length; i++) {
array3[array2[i][0]][array2[i][1]]=array2[i][2];
}
// 輸出還原的陣列
printarray(array3);
}
// 定義一個輸入矩陣的方法
public static void printarray(int[][] array){
for (int[] x:array){
for(int y:x){
System.out.print(y+" ");
}
System.out.println();
}
}