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

歡迎訪問 生活随笔!

生活随笔

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

java

java面试题24 关于Java中的数组,

發布時間:2023/12/10 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java面试题24 关于Java中的数组, 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java面試題24 關于Java中的數組,下面的一些描述,哪些描述是準確的:(????????)

A 數組是一個對象,不同類型的數組具有不同的類 B 數組長度是可以動態調整的 C 數組是一個連續的存儲結構 D:一個固定長度的數組可類似這樣定義:?int?array[100] E:兩個數組用equals方法比較時,會逐個便利其中的元素,對每個元素進行比較 F可以二維數組,且可以有多維數組,都是在Java中合法的

懵逼樹上懵逼果,懵逼樹前你和我

?

數組的基本概念

如果說現在要求你定義100個整型變量,那么如果按照之前的做法,可能現在定義的的結構如下:

int i1, i2, i3, ... i100;

但是這個時候如果按照此類方式定義就會非常麻煩,因為這些變量彼此之間沒有任何的關聯,也就是說如果現在突然再有一個要求,要求你輸出這100個變量的內容,意味著你要編寫System.out.println()語句100次。

其實所謂的數組指的就是一組相關類型的變量集合,并且這些變量可以按照統一的方式進行操作。數組本身屬于引用數據類型,那么既然是引用數據類型,這里面實際又會牽扯到內存分配,而數組的定義語法有如下兩類。

??? 數組動態初始化:
??????? 聲明并開辟數組:
??????????? 數據類型 [] 數組名稱 = new 數據類型[長度];
??????????? 數據類型 [] 數組名稱 = new 數據類型[長度];
??????? 分布進行數組空間開辟(實例化)
??????? | Tables | Are |
??????? | ------------- |:-------------?
??????? | 聲明數組: | 數組類型 數組名稱[] = null; | | | 數組類型 [] 數組名稱 =null; | | 開辟數組空間: | 數組名稱 =new` 數組類型[長度]; |

那么當數組開辟空間之后,就可以采用如下的方式的操作:

??? 數組的訪問通過索引完成,即:“數組名稱[索引]”,但是需要注意的是,數組的索引從0開始,所以索引的范圍就是0 ~ 數組長度-1,例如開辟了3個空間的數組,所以可以使用的索引是:0,1,2,如果此時訪問的時候超過了數組的索引范圍,會產生java.lang.ArrayIndexOutOfBoundsException 異常信息;
??? 當我們數組采用動態初始化開辟空間后,數組里面的每一個元素都是該數組對應數據類型的默認值;
??? 數組本身是一個有序的集合操作,所以對于數組的內容操作往往會采用循環的模式完成,數組是一個有限的數據集合,所以應該使用 for 循環。
??? 在 Java 中提供有一種動態取得數組長度的方式:數組名稱.length;

范例: 定義一個int型數組

public class ArrayDemo {public static void main(String args[]) {int data[] = new int[3]; /*開辟了一個長度為3的數組*/data[0] = 10; // 第一個元素data[1] = 20; // 第二個元素data[2] = 30; // 第三個元素for(int x = 0; x < data.length; x++) {System.out.println(data[x]); //通過循環控制索引}} }

數組本身除了聲明并開辟空間之外還有另外一種開辟模式。

范例: 采用分步的模式開辟數組空間

public class ArrayDemo {public static void main(String args[]) {int data[] = null;data = new int[3]; /*開辟了一個長度為3的數組*/data[0] = 10; // 第一個元素data[1] = 20; // 第二個元素data[2] = 30; // 第三個元素for(int x = 0; x < data.length; x++) {System.out.println(data[x]); //通過循環控制索引}} }

但是千萬要記住,數組屬于引用數據類型,所以在數組使用之前一定要開辟控件(實例化),如果使用了沒有開辟空間的數組,則一定會出現 NullPointerException 異常信息:

public class ArrayDemo {public static void main(String args[]) {int data[] = null;System.out.println(data[x]);} }

這一原則和之前講解的對象是完全相同的。

數組在開發之中一定會使用,但是像上面的操作很少。在以后的實際開發之中,會更多的使用數組概念,而直接使用,99%情況下都只是做一個 for 循環輸出。
數組引用傳遞

既然數組屬于引用數據類型,那么也一定可以發生引用傳遞。在這之前首先來研究一下數組的空間開辟。

范例: 觀察一道程序

public class ArrayDemo {public static void main(String args[]) {int data[] = null;data = new int[3]; //開辟一個長度為3的數組data[0] = 10;data[1] = 20;data[2] = 30;} }

??

新建數組變量

那么既然說到了引用數據類型了,就一定可以發生引用傳遞,而現在的引用傳遞的本質也一定是:同一塊堆內存空間可以被不同的棧內存所指向。

范例: 定義一個程序

public class ArrayDemo {public static void main(String args[]) {int data[] = null;data = new int[3]; //開辟一個長度為3的數組int temp[] = null; //聲明對象data[0] = 10;data[1] = 20;data[2] = 30;temp = data; //int temp[] = data;temp[0] = 99;for(int i = 0; i < temp.length; i++) {System.out.println(data[i]);}} }

引用傳遞分析都是一個套路。同一塊堆內存被不同的棧內存所指向。
數組靜態初始化

在之前所進行的數組定義都有一個明顯特點:數組先開辟內存空間,而后再使用索引進行內容的設置,實際上這種做法都叫做動態初始化,而如果希望數組在定義的時候可以同時出現設置內容,那么就可以采用靜態初始化完成。

數組的靜態初始化一共分為以下兩種類型:
Tables ?? ?Are
簡化格式: ?? ?數據類型 數組名稱 = {值, 值,…}
完整格式: ?? ?數據類型 數組名稱 = new 數據類型[] {值, 值,…}

范例: 采用靜態初始化定義數組

public class ArrayDemo {public static void main(String args[]) {int data[] = {1, 2, 4, 545, 11, 32, 13131, 4444};for(int i = 0; i < data.length; i++) {System.out.println(data[i]);}} }

在開發之中,對于靜態數組的初始化強烈建議使用完整語法模式,這樣可以輕松地使用匿名數組這一概念。

public class ArrayDemo {public static void main(String args[]) {System.out.println(new int[] {1, 2, 4, 545, 11, 32, 13131, 4444}.length);} }

以后使用靜態方式定義數組的時候一定要寫上完整格式。

數組最大的缺陷:長度固定。
二維數組

在之前所使用的數組發現只需要一個索引就可以進行訪問,那么這樣的數組實際上非常像一個數據行的概念。

現在痛過一個索引就可以取得唯一的一個記錄。所以這樣的數組可以簡單理解為一維數組,而二維數組本質上指的是行列集合,也如果要確定某一個數據需要行索引和列索引來進行定位。

如果要想確定一個數據則數據使用的結構是“數組名稱[行索引][列索引]”,所以這樣的結構就是一個表的結構。

那么對二維數組的定義有兩種聲明形式:

??? 數組的動態初始化:數據類型 對象數組[][] = new 數據類型[行個數][列個數];
??? 數組的靜態初始化:數據類型 對象數組[][] = new 數據類型[行個數][列個數]{{值, 值,…}, {值, 值,…},…};

數組的數組就是二維數組。

范例: 定義一個二維數組

public class ArrayDemo {public static void main(String args[]) {//此時的數組并不是一個等列數組int data[][] = new int[][] {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};//如果在進行輸出的時候一定要使用雙重循環,//外部的循環控制輸出的行數,而內部的循環控制輸出列數for(int i = 0; i < data.length; i++) {for(int j = 0; j < data[i].length; j++) {System.out.print("data[" + i + "][" + j + "]=" + data[i][j] + "、");}System.out.println();}} }

由于輸出麻煩,所以可以忽略了,在進行開發之中,出現二位數組的幾率并不高。

同樣的,我們看看別人的解析,答案最后是

正確答案: A C F

我是歌謠,喜歡敲代碼,無聊刷刷題。不多說了,我先去敲代碼去。有什么不合理之處,歡迎吐槽。

閱讀目錄(置頂)(長期更新計算機領域知識)

閱讀目錄(置頂)(長期更新計算機領域知識)

閱讀目錄(置頂)(長期科技領域知識)

歌謠帶你看java面試題

總結

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

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