日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

[Java学习笔记]-数组

發布時間:2023/12/16 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Java学习笔记]-数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[Java學習筆記]-數組

  • 數組
    • 數組的定義
    • 數組的賦值
    • 計算數組nums[ ]的和
  • 底層的簡單了解
  • 下標越界
  • 數組與循環
  • 引用數據類型
  • 數組和方法的關系
  • 三種初始化
  • 數組的使用
    • 普通使用
    • 增強型 for 循環
    • 反轉數組
  • 多維數組
    • 打印輸出
    • 利用 for 循環打印輸出
  • Array 類
  • 冒泡排序(1/8)
  • 稀疏數組
    • 有效值的個數
    • 輸出稀疏數組
    • 還原稀疏數組
    • 完整Demo
  • 總結


數組

數組的定義

//數組聲明 int[] nums; //定義一個 nums 的一維數組 nums = new int[10]; //nums[]數組里存放 10 個 int 類型的值

數組的賦值

nums[0] = 1; nums[1] = 2; nums[2] = 3; nums[3] = 4; //給 nums[i]數組賦值 nums[4] = 5; nums[5] = 6; nums[6] = 7; nums[7] = 8; nums[8] = 9; nums[9] = 10;

計算數組nums[ ]的和

//計算 nums[i]的和 int sum =0; for (int i = 0; i <nums.length; i++) {sum = sum + nums[i]; } System.out.println("和為: "+sum);//輸出 和為: 55

底層的簡單了解

//定義 array 數組 int[] array = new int[10];

創建一個一維數組在底層的運作原理


下標越界

輸出沒有定義的內容

int[] arrays = new int[10]; System.out.println(arrays[10]); //數組中是 0-9,沒有第 10 個元素


數組與循環

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]);}} }


引用數據類型

開發中引用數據類型,用于保存其他內存空間的首地址,保存地址之后,cpu 可以通過對應的引用數據類型,得到相應的地址,從而訪問地址對應內存空間

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]);} }


數組和方法的關系

public static return methodName (arrayType[] arrayName)

arraytName 是一個數組類型的變量,引用數據類型的變量,傳遞的是數組的首地址,所以 assignIntArray 函數才能成功的進行賦值

class Demo1 {public static void main(String[] args) {int[] array = new int[10];// 調用賦值數組中元素的方法assignIntArray(array);// 調用打印數組中元素的方法printIntArray(array);}/*** 數組賦值* @param arr*/public static void assignIntArray(int[] arr) {for (int i = 0; i < arr.length; i++) {arr[i] = i + 1;}}/*** 打印數組* @param arr*/public static void printIntArray(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.println("arr[" + i + "] = " + arr[i]);}} }


三種初始化

//靜態初始化: 創建+賦值 int[] a = {1,2,3,4,5,6,7,8,9}; //Demo1[] mans = {new Demo1(),new Demo1()}; System.out.println(a[2]);

//動態初始化 int[] b = new int[10]; b[0]=12; System.out.println(b[0]);


數組的使用

普通使用

package com.Muz1.Arrays; public class Demo2 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};//打印數組全部元素System.out.println("====================================");System.out.println("打印數組全部元素");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 循環

int[] arr = {1,2,3,4,5}; for (int array : arr) {System.out.println(array); }

//可利用函數打印數組 public class Demo3 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};printArray(arr);}//打印數組函數public static void printArray(int[] arrays){for (int i = 0; i < arrays.length; i++) {System.out.print(arrays[i]+"");}} }

反轉數組

public class Demo3 {public static void main(String[] args) {int[] arr = {1,2,3,4,5}; //定義數組int[] reverse = reverse(arr); //進行反轉操作printArray(reverse); //利用輸出函數進行輸出}//反轉數組public static int[] reverse(int[] arrays){int[] result = new int[arrays.length];//反轉的操作for (int i = 0 , j=arrays.length-1 ; i < arrays.length; i++ , j--) {result[j] = arrays[i];}return result;}//打印數組函數public static void printArray(int[] arrays){for (int i = 0; i < arrays.length; i++) {System.out.print(arrays[i]+" ");}} }


多維數組

多維數組就是數組的數組

int[][] array = {{1,2},{2,3},{3,4},{4,5}}; /*** 1,2 array[0]* 2,3 array[1]* 3,4 array[2]* 4,5 array[3]*/

打印輸出

int[][] array = {{1,2},{2,3},{3,4},{4,5}}; System.out.println(array[0][0]); System.out.println(array[0][1]);

利用 for 循環打印輸出

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 類

自己寫輸出函數方法

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); //自己定義的函數}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]+", ");}}} }


運行結果效果一樣


冒泡排序(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); //調用完自己的寫的排序方法之后,返回一個數組System.out.println(Arrays.toString(sort)); //輸出數組}//冒泡排序public static int[] sort(int[] array){//臨時變量int temp = 0;//外層循環,判斷要走多少次for (int i = 0; i < array.length; i++) {//內層循環,判斷兩位數,交換位置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;} }


升序輸出


稀疏數組

稀疏數組可以看做是普通數組的壓縮,但是這里說的普通數組是值無效數據量遠大于有效數據量的數組
形如:

0 0 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 00 0 0 0 2 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0

其稀疏數組形式:

11 11 21 2 12 4 2

輸出一個棋盤

package com.Muz1.Arrays; public class Demo7 {public static void main(String[] args) {//創建一個二維數組 11*11 0:沒有棋子 1:黑棋 2:白棋int[][] arr1 = new int[11][11];arr1[1][2] = 1;arr1[2][3] = 2;//輸出原始數組System.out.println("輸出原始數組");for (int[] ints : arr1) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}} }

有效值的個數

//轉換為稀疏數組保存 //獲取有效值的個數 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);

輸出稀疏數組

package com.Muz1.Arrays; public class Demo7 {public static void main(String[] args) {//創建一個二維數組 11*11 0:沒有棋子 1:黑棋 2:白棋int[][] arr1 = new int[11][11];arr1[1][2] = 1;arr1[2][3] = 2;//轉換為稀疏數組保存//獲取有效值的個數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);//創建一個稀疏數組int[][] arr2 = new int[sum+1][3];arr2[0][0] = 11;arr2[0][1] = 11;arr2[0][2] = sum;//遍歷二維數組,將非零值存放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("輸出稀疏數組");for (int i = 0; i < arr2.length; i++) {System.out.println(arr2[i][0]+"\t"+arr2[i][1]+"\t"+arr2[i][2]+"\t");}} }

還原稀疏數組

繼續上面的寫

//還原稀疏數組 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("輸出還原數組"); 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) {//創建一個二維數組 11*11 0:沒有棋子 1:黑棋 2:白棋int[][] arr1 = new int[11][11];arr1[1][2] = 1;arr1[2][3] = 2;System.out.println("輸出原始數組");for (int[] ints : arr1) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}//轉換為稀疏數組保存//獲取有效值的個數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);//創建一個稀疏數組int[][] arr2 = new int[sum+1][3];arr2[0][0] = 11;arr2[0][1] = 11;arr2[0][2] = sum;//遍歷二維數組,將非零值存放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("輸出稀疏數組");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("==================================================");//還原稀疏數組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("輸出還原數組");for (int[] ints : arr1) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}} }


總結

以上就是Java數組的學習,本文僅僅簡單介紹了Java數組的使用。歡迎各師傅關注,交流,討論。

總結

以上是生活随笔為你收集整理的[Java学习笔记]-数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。