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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解析java中的数组

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解析java中的数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一 數組的定義
  • 二 數組的基本語法
  • 三 數組的使用
    • 1 數組獲取長度與訪問元素
      • 注意事項:
    • 2 數組的遍歷
      • (1)for循環遍歷
      • (2)for-each遍歷數組
  • 四 數組作為方法的參數
    • (1)基本用法
    • (2)理解引用類型
    • 總結:
  • 五 認識null
    • 例題
    • 注意:
  • 六. 數組作為方法的返回值
  • 七 數組的拷貝
    • 1 copyof
    • 2 copyRange
    • 3 clone()
    • 4 System.arraycopy
  • 八. 二維數組
    • 1 基本語法
    • 2 二維數組的遍歷
      • (1)for循環進行遍歷
      • (2)for-each循環遍歷
      • (3)調用Arrays
    • 3 不規則的二維數組

一 數組的定義

數組:本質上就是一組相同類型的變量。

二 數組的基本語法

1) 數據類型[] 數組名稱 = new 數據類型 [] { 初始化數據 };:int[] arr = new int[]{1, 2, 3}; 2) 數據類型[] 數組名稱 = { 初始化數據 };: int[] arr = {1, 2, 3}; 3) 數據類型[] 數組名稱 = new int[定義數組長度];//這種定義數組里面全部初始化為零:int[] arr = new int[10];

三 數組的使用

1 數組獲取長度與訪問元素

int[] arr = {1, 2, 3}; // 獲取數組長度 System.out.println("length: " + arr.length); // 執行結果: 3 // 訪問數組中的元素 System.out.println(arr[1]); // 執行結果: 2

注意事項:

(1): 訪問數組元素的下標是從0開始的
(2):下表訪問的數不能超過【0,length-1】,否則會出現數組越界,這樣程序會報錯。
(3):利用[]可以對數組的內容進行更改與讀取操作

2 數組的遍歷

(1)for循環遍歷

int[] arr = {1, 2, 3}; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); }

(2)for-each遍歷數組

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

四 數組作為方法的參數

(1)基本用法

public static void main(String[] args) {int[] arr = {1, 2, 3};printArray(arr); } public static void printArray(int[] a) {for (int x : a) {System.out.println(x);} } // 執行結果 1 2 3

在以上的這個數組中,int[] a 是函數的形參, int[] arr 是函數實參.

(2)理解引用類型

參數傳數組類型就是屬于引用類型

public static void main(String[] args) {int[] arr = {1, 2, 3};func(arr);System.out.println("arr[0] = " + arr[0]); } public static void func(int[] a) {a[0] = 10;System.out.println("a[0] = " + a[0]); } // 執行結果 a[0] = 10 arr[0] = 10

我們發現, 在方法內部修改數組內容, 主函數數組內容也發生改變.
此時數組名 arr 是一個 “引用” . 當傳參的時候, 是按照引用傳參.
這個就需要我們從內存這個知識去解釋了,在內存中,局部變量創建是放在JVM的棧上
,對象是在堆上。在上面這個代碼中,首先進入main函數,為arr開辟一個內存空間,放到棧上,里面存放的是對象的地址(0x789),而這里的對象就是對數組的內容(1,2,3)會被放到堆上地址為(0x789),通過地址,arr就能夠訪問到對象,而之后用到方法,arr會把它的地址傳給a,此時JVM的棧上有開辟了一個空間(0x789),通過a,也可以訪問到arr的對象,可以進行改寫與讀操作。
圖例:

總結:

所謂的 “引用” 本質上只是存了一個地址. Java 將數組設定成引用類型

五 認識null

null 在 Java 中表示 “空引用” , 也就是一個無效的引用

例題

int[] arr = null; System.out.println(arr[0]); // 執行結果 Exception in thread "main" java.lang.NullPointerException at Test.main(Test.java:6)

null 的作用類似于 C 語言中的 NULL (空指針), 都是表示一個無效的內存位置. 因此不能對這個內存進行任何讀寫操作. 一旦嘗試讀寫, 就會拋出 NullPointerException.

注意:

Java 中并沒有約定 null 和 0 號地址的內存有任何關聯

六. 數組作為方法的返回值

// 返回一個新的數組 class Test { public static void main(String[] args) {int[] arr = {1, 2, 3};int[] output = transform(arr);printArray(output); } public static void printArray(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);} } public static int[] transform(int[] arr) {int[] ret = new int[arr.length];for (int i = 0; i < arr.length; i++) {ret[i] = arr[i] * 2;}return ret;} }

從以上代碼分析可以得出,數組可以作為返回值類型,從而返回一個數組,特別注意一下這個ret數組,這個ret數組里面存放的地址不在是arr內存中的地址,此時的ret數組里面的內容會與arr的內容一致。

七 數組的拷貝

1 copyof

import java.util.Arrays;//這個是導入的包,在下面使用Arrays后自動導入public class java1027 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};int[] ret = Arrays.copyOf(arr,arr.length);//arr表示要進行拷貝的數組,arr.length表示拷貝的長度}

注意這里拷貝的長度可以是乘以一個實數,比如乘以2,那么拷貝后ret數組就變成{1,2,3,4,5,0,0,0,0,0}這個就是擴容處理

2 copyRange

import java.util.Arrays;public class java1027 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};int[] ret = Arrays.copyOfRange(arr,2,4);//arr表示原數組,2表示的是拷貝的起始位置,4表示拷貝結束的位置}

3 clone()

public class java1027 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};int[] ret = arr.clone();}

4 System.arraycopy

import java.util.Arrays;public class java1027 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};int[] ret = new int[arr.length];System.arraycopy(arr,0,ret,0,arr.length);System.out.println(Arrays.toString(ret));//數組以字符串的形式輸出}//arr表示的是原數組,0表示從原數組0下標開始拷貝,ret表示目的數組,0表示從下標0開始,arr.length表示結束下標

以上四種拷貝方式都是屬于淺拷貝,至于深拷貝,后續的內容我們會詳解

八. 二維數組

1 基本語法

1)數據類型[][] 數組名稱 = new 數據類型 [行數][列數] { 初始化數據 };
2)數據類型[][] 數組名稱 ={ 初始化數據 };

public class java1027 {public static void main(String[] args) {int[][] arr = {{1,2,4},{1,2,3}};System.out.println(arr.length);System.out.println(arr[0].length);}

運行結果
2
3


二維數組arr從這張圖就可以看出二維數組是一個特殊的一維數組,結合上訴代碼就可以看出arr.length代表的是整個行的長度,arr[0].length(或者arr[1].length)代表的是列的長度。知道這個之后就可以遍歷二維數組的內容了,

2 二維數組的遍歷

(1)for循環進行遍歷

public class java1027 {public static void main(String[] args) {int[][] arr = {{1,2,4},{1,2,3}};for (int i = 0; i < arr.length; i++) {//訪問行for (int j = 0; j < arr[i].length; j++) {//訪問列System.out.print(arr[i][j]+" ");}System.out.println();}}

運行結果
1 2 4
1 2 3

(2)for-each循環遍歷

public class java1027 {public static void main(String[] args) {int[][] arr = {{1,2,4},{1,2,3}};for (int[] ret:arr) {for (int x:ret) {System.out.print(x+" ");}System.out.println();}}

(3)調用Arrays

import java.util.Arrays;public class java1027 {public static void main(String[] args) {int[][] arr = {{1,2,4},{1,2,3}};System.out.println(Arrays.deepToString(arr));}

運行結果
[[1, 2, 4], [1, 2, 3]]

3 不規則的二維數組

public class java1027 {public static void main(String[] args) {int[][] arr = new int[2][];arr[0]=new int[3];arr[1]=new int[2];for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {System.out.print(arr[i][j]+" ");}System.out.println();}}

運行結果
0 0 0
0 0

總結

以上是生活随笔為你收集整理的解析java中的数组的全部內容,希望文章能夠幫你解決所遇到的問題。

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