[Java学习笔记]-数组
生活随笔
收集整理的這篇文章主要介紹了
[Java学习笔记]-数组
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
[Java學(xué)習(xí)筆記]-數(shù)組
- 數(shù)組
- 數(shù)組的定義
- 數(shù)組的賦值
- 計算數(shù)組nums[ ]的和
- 底層的簡單了解
- 下標越界
- 數(shù)組與循環(huán)
- 引用數(shù)據(jù)類型
- 數(shù)組和方法的關(guān)系
- 三種初始化
- 數(shù)組的使用
- 普通使用
- 增強型 for 循環(huán)
- 反轉(zhuǎn)數(shù)組
- 多維數(shù)組
- 打印輸出
- 利用 for 循環(huán)打印輸出
- Array 類
- 冒泡排序(1/8)
- 稀疏數(shù)組
- 有效值的個數(shù)
- 輸出稀疏數(shù)組
- 還原稀疏數(shù)組
- 完整Demo
- 總結(jié)
數(shù)組
數(shù)組的定義
//數(shù)組聲明 int[] nums; //定義一個 nums 的一維數(shù)組 nums = new int[10]; //nums[]數(shù)組里存放 10 個 int 類型的值數(shù)組的賦值
nums[0] = 1; nums[1] = 2; nums[2] = 3; nums[3] = 4; //給 nums[i]數(shù)組賦值 nums[4] = 5; nums[5] = 6; nums[6] = 7; nums[7] = 8; nums[8] = 9; nums[9] = 10;計算數(shù)組nums[ ]的和
//計算 nums[i]的和 int sum =0; for (int i = 0; i <nums.length; i++) {sum = sum + nums[i]; } System.out.println("和為: "+sum);//輸出 和為: 55底層的簡單了解
//定義 array 數(shù)組 int[] array = new int[10];創(chuàng)建一個一維數(shù)組在底層的運作原理
下標越界
輸出沒有定義的內(nèi)容
int[] arrays = new int[10]; System.out.println(arrays[10]); //數(shù)組中是 0-9,沒有第 10 個元素數(shù)組與循環(huán)
Array.lengthpublic class Demo1 {public static void main(String[] args) {int[] arr = new int[10];for (int i = 0; i <nums.length; i++) {arr[i] = i + 1;}for (int i = 0; i <nums.length; i++) {System.out.println("arr["+i+"]="+arr[i]);}} }引用數(shù)據(jù)類型
開發(fā)中引用數(shù)據(jù)類型,用于保存其他內(nèi)存空間的首地址,保存地址之后,cpu 可以通過對應(yīng)的引用數(shù)據(jù)類型,得到相應(yīng)的地址,從而訪問地址對應(yīng)內(nèi)存空間
class Demo1 {public static void main(String[] args) {int[] arr1 = new int[10];int[] arr2 = new int[10];arr1[5] = 100;arr2[5] = 200;System.out.println(arr1[5]);System.out.println(arr2[5]);// 這里只是將首地址進行了賦值操作arr1 = arr2;arr1[5] = 2000;System.out.println(arr1[5]);System.out.println(arr2[5]);} }數(shù)組和方法的關(guān)系
public static return methodName (arrayType[] arrayName)arraytName 是一個數(shù)組類型的變量,引用數(shù)據(jù)類型的變量,傳遞的是數(shù)組的首地址,所以 assignIntArray 函數(shù)才能成功的進行賦值
class Demo1 {public static void main(String[] args) {int[] array = new int[10];// 調(diào)用賦值數(shù)組中元素的方法assignIntArray(array);// 調(diào)用打印數(shù)組中元素的方法printIntArray(array);}/*** 數(shù)組賦值* @param arr*/public static void assignIntArray(int[] arr) {for (int i = 0; i < arr.length; i++) {arr[i] = i + 1;}}/*** 打印數(shù)組* @param arr*/public static void printIntArray(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.println("arr[" + i + "] = " + arr[i]);}} }三種初始化
//靜態(tài)初始化: 創(chuàng)建+賦值 int[] a = {1,2,3,4,5,6,7,8,9}; //Demo1[] mans = {new Demo1(),new Demo1()}; System.out.println(a[2]); //動態(tài)初始化 int[] b = new int[10]; b[0]=12; System.out.println(b[0]);數(shù)組的使用
普通使用
package com.Muz1.Arrays; public class Demo2 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};//打印數(shù)組全部元素System.out.println("====================================");System.out.println("打印數(shù)組全部元素");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();System.out.println("====================================");//計算所有元素的和System.out.println("計算所有元素的和");int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}System.out.println("sum="+sum);System.out.println("====================================");//查找最大元素System.out.println("查找最大元素");int max = arr[0];for (int i = 1; i < arr.length; i++) {if(arr[i]>max){max = arr[i];}}System.out.println("max="+max);} }增強型 for 循環(huán)
int[] arr = {1,2,3,4,5}; for (int array : arr) {System.out.println(array); } //可利用函數(shù)打印數(shù)組 public class Demo3 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};printArray(arr);}//打印數(shù)組函數(shù)public static void printArray(int[] arrays){for (int i = 0; i < arrays.length; i++) {System.out.print(arrays[i]+"");}} }反轉(zhuǎn)數(shù)組
public class Demo3 {public static void main(String[] args) {int[] arr = {1,2,3,4,5}; //定義數(shù)組int[] reverse = reverse(arr); //進行反轉(zhuǎn)操作printArray(reverse); //利用輸出函數(shù)進行輸出}//反轉(zhuǎn)數(shù)組public static int[] reverse(int[] arrays){int[] result = new int[arrays.length];//反轉(zhuǎn)的操作for (int i = 0 , j=arrays.length-1 ; i < arrays.length; i++ , j--) {result[j] = arrays[i];}return result;}//打印數(shù)組函數(shù)public static void printArray(int[] arrays){for (int i = 0; i < arrays.length; i++) {System.out.print(arrays[i]+" ");}} }多維數(shù)組
多維數(shù)組就是數(shù)組的數(shù)組
打印輸出
int[][] array = {{1,2},{2,3},{3,4},{4,5}}; System.out.println(array[0][0]); System.out.println(array[0][1]);利用 for 循環(huán)打印輸出
int[][] array = {{1,2},{2,3},{3,4},{4,5}}; for (int i = 0; i < array.length; i++) {for (int j = 0; j < array[i].length; j++) {System.out.println(array[i][j]);} }Array 類
自己寫輸出函數(shù)方法
import java.util.Arrays; public class Demo5 {public static void main(String[] args) {int[] a = {15,86,1586,3,874,861,68,456,1,8564,684};System.out.println(Arrays.toString(a)); //Arrays 類方法printArrays(a); //自己定義的函數(shù)}public static void printArrays(int[] a){for (int i = 0; i < a.length; i++) {if(i == 0){System.out.print("["+a[i]+", ");} else if (i == a.length - 1) {System.out.print(a[i]+"]");}else {System.out.print(a[i]+", ");}}} }
運行結(jié)果效果一樣
冒泡排序(1/8)
八種排序方法其一
import java.util.Arrays; public class Demo6 {public static void main(String[] args) {int[] array = {2,5,84,86,984,231,5,84,56,45,64,5468,4,3,54,5,3,6,4};int[] sort = sort(array); //調(diào)用完自己的寫的排序方法之后,返回一個數(shù)組System.out.println(Arrays.toString(sort)); //輸出數(shù)組}//冒泡排序public static int[] sort(int[] array){//臨時變量int temp = 0;//外層循環(huán),判斷要走多少次for (int i = 0; i < array.length; i++) {//內(nèi)層循環(huán),判斷兩位數(shù),交換位置for (int j = 0; j < array.length - 1 - i; j++) {if(array[j+1]<array[j]){ //<升序輸出,>降序輸出temp = array[j];array[j] = array[j+1];array[j+1] = temp;}}}return array;} }
升序輸出
稀疏數(shù)組
稀疏數(shù)組可以看做是普通數(shù)組的壓縮,但是這里說的普通數(shù)組是值無效數(shù)據(jù)量遠大于有效數(shù)據(jù)量的數(shù)組
形如:
其稀疏數(shù)組形式:
11 11 21 2 12 4 2輸出一個棋盤
package com.Muz1.Arrays; public class Demo7 {public static void main(String[] args) {//創(chuàng)建一個二維數(shù)組 11*11 0:沒有棋子 1:黑棋 2:白棋int[][] arr1 = new int[11][11];arr1[1][2] = 1;arr1[2][3] = 2;//輸出原始數(shù)組System.out.println("輸出原始數(shù)組");for (int[] ints : arr1) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}} }有效值的個數(shù)
//轉(zhuǎn)換為稀疏數(shù)組保存 //獲取有效值的個數(shù) int sum = 0; for (int i = 0; i < 11; i++) {for (int j = 0; j < 11; j++) {if(arr1[i][j] != 0){sum++;}} } System.out.println(sum);輸出稀疏數(shù)組
package com.Muz1.Arrays; public class Demo7 {public static void main(String[] args) {//創(chuàng)建一個二維數(shù)組 11*11 0:沒有棋子 1:黑棋 2:白棋int[][] arr1 = new int[11][11];arr1[1][2] = 1;arr1[2][3] = 2;//轉(zhuǎn)換為稀疏數(shù)組保存//獲取有效值的個數(shù)int sum = 0;for (int i = 0; i < 11; i++) {for (int j = 0; j < 11; j++) {if(arr1[i][j] != 0){sum++;}}}System.out.println(sum);//創(chuàng)建一個稀疏數(shù)組int[][] arr2 = new int[sum+1][3];arr2[0][0] = 11;arr2[0][1] = 11;arr2[0][2] = sum;//遍歷二維數(shù)組,將非零值存放int cout = 0;for (int i = 0; i < arr1.length; i++) {for (int j = 0; j < arr1[i].length; j++) {if(arr1[i][j] != 0){cout++;arr2[cout][0] = i;arr2[cout][1] = j;arr2[cout][2] = arr1[i][j];}}}System.out.println("輸出稀疏數(shù)組");for (int i = 0; i < arr2.length; i++) {System.out.println(arr2[i][0]+"\t"+arr2[i][1]+"\t"+arr2[i][2]+"\t");}} }還原稀疏數(shù)組
繼續(xù)上面的寫
//還原稀疏數(shù)組 int[][] arr3 = new int[arr2[0][0]][arr2[0][1]]; //還原元素值 for (int i = 1; i < arr2.length; i++) {arr3[arr2[i][0]][arr2[i][1]] = arr2[i][2]; } //打印 System.out.println("輸出還原數(shù)組"); for (int[] ints : arr1) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println(); }完整Demo
package com.Muz1.Arrays; public class Demo7 {public static void main(String[] args) {//創(chuàng)建一個二維數(shù)組 11*11 0:沒有棋子 1:黑棋 2:白棋int[][] arr1 = new int[11][11];arr1[1][2] = 1;arr1[2][3] = 2;System.out.println("輸出原始數(shù)組");for (int[] ints : arr1) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}//轉(zhuǎn)換為稀疏數(shù)組保存//獲取有效值的個數(shù)int sum = 0;for (int i = 0; i < 11; i++) {for (int j = 0; j < 11; j++) {if(arr1[i][j] != 0){sum++;}}}System.out.println(sum);//創(chuàng)建一個稀疏數(shù)組int[][] arr2 = new int[sum+1][3];arr2[0][0] = 11;arr2[0][1] = 11;arr2[0][2] = sum;//遍歷二維數(shù)組,將非零值存放int cout = 0;for (int i = 0; i < arr1.length; i++) {for (int j = 0; j < arr1[i].length; j++) {if(arr1[i][j] != 0){cout++;arr2[cout][0] = i;arr2[cout][1] = j;arr2[cout][2] = arr1[i][j];}}}System.out.println("輸出稀疏數(shù)組");for (int i = 0; i < arr2.length; i++) {System.out.println(arr2[i][0]+"\t"+arr2[i][1]+"\t"+arr2[i][2]+"\t");}System.out.println("==================================================");//還原稀疏數(shù)組int[][] arr3 = new int[arr2[0][0]][arr2[0][1]];//還原元素值for (int i = 1; i < arr2.length; i++) {arr3[arr2[i][0]][arr2[i][1]] = arr2[i][2];}//打印System.out.println("輸出還原數(shù)組");for (int[] ints : arr1) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}} }總結(jié)
以上就是Java數(shù)組的學(xué)習(xí),本文僅僅簡單介紹了Java數(shù)組的使用。歡迎各師傅關(guān)注,交流,討論。
總結(jié)
以上是生活随笔為你收集整理的[Java学习笔记]-数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一代操盘手图解“庄家操盘五部曲”;股市
- 下一篇: java中的Character和char