1.String
數組
我想給你一個關於String
數組的簡要概述。
正如我們之前所說,數組可以是任何類型。這意味著您可以創建一個 s 數組String
。如果我們想編寫一個“從鍵盤讀取 10 行並以相反順序顯示它們”的程序,代碼如下所示:
|
創建一個Scanner 對象創建一個包含 10 個元素的數組對象 Loop from 0 to 9 從鍵盤讀取一個字符串並將其保存在數組的下一個單元格中 Loop from 9 to 0 顯示數組中的下一個單元格 |
代碼幾乎沒有變化!我們只需要在創建數組時替換int
為。String
好吧,當從鍵盤讀取字符串時,我們也將nextInt()
方法替換為nextLine()
.
2.String
內存中的數組
還有一個更有用的事實。讓我們考慮3張圖片:
圖 1.String
對像在內存中的排列方式:
這張照片是從以前的課程中拍攝的。
請注意,字符串的文本不直接存儲在變量中:為其分配了一個單獨的內存塊。變量String
存儲存儲文本的對象的地址(引用)。
圖 2.整數數組在內存中的排列方式:
這畫面也是似曾相識。
圖 3.字符串數組在內存中的排列方式:
在左邊我們看到一個數組變量,它的類型是String[]
(它存儲一個數組對象的地址)。
在中間,我們有String
數組對象本身。
右邊是存儲一些文本的字符串對象。
數組的單元格String
不存儲字符串本身(String 對象的文本)。相反,他們存儲他們的地址(對他們的引用)。String
與變量存儲字符串對像地址(存儲文本的位置)的方式相同。
比較數組單元格時請考慮這一點:
|
創建一個包含 10 個字符串的數組 將值放入數組中 true (引用相等)false (引用不相等)true (字符串相等)true (字符串仍然相等) |
3. Java中的快速數組初始化
數組非常有用,因此 Java 的創建者試圖盡可能方便地使用它們。
他們做的第一件事是簡化數組初始化,即提供數組初始值的過程。
畢竟,除了從某處讀取數據外,程序還經常需要自己的內部數據才能工作。例如,假設我們需要將每個月的長度存儲在一個數組中。這就是代碼的樣子:
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
但感謝 Java 的創造者,有一種方法可以更簡潔地編寫它:
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
您可以簡單地列出數組的所有值,以逗號分隔!
方便吧?但這還不是全部。
碰巧的是,編譯器可以根據數組值的類型來確定容器(數組對象)的類型。並且為了確定數組的長度,計算寫在花括號中的元素的數量是微不足道的。
這意味著這段代碼可以寫得更短:
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
一件美事,不是嗎?🙂
這稱為“快速數組初始化”。順便說一句,這適用於int
...以外的類型
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};
GO TO FULL VERSION