java核心技術卷I-數組

創建一個數字數組時, 所有元素都初始化爲 0
boolean 數組的元素會初始化爲 false
對象數組的元素則初始化爲一個特殊值 null, 這表示這些元素(還)未存放任何對象。

String[] names = new String[10];

會創建一個包含 10 個字符串的數組,所有字符串都爲 null
如果創建了一個 100 個元素的數組,並且試圖訪問元素 a[100] (或任何在 0 ~ 99
之外的下標,) 程序就會引發“ array index out of bounds” 異常而終止執行。
一旦創建了數組, 就不能再改變它的大小(儘管可以改變每一個數組元素)
如果經常需要在運行過程中擴展數組的大小,就應該使用另一種數據結構—數組列表(array list)
打印數組中的所有值

 System.out.println(Arrays.toString(a));

這些元素被放置在括號內,並用逗號分隔, 例如,“ [2,3,5,7,11,13]”

數組拷貝

1.在 Java 中,允許將一個數組變量拷貝給另一個數組變量。這時, 兩個變量將引用同 一個數組:

int[] luckyNumbers = smallPrimes;
1uckyNumbers[5] = 12; // now smallPrimes[5] is also 12

2.如果希望將一個數組的所有值拷貝到一個新的數組中去,就要使用 Arrays 類的 copyOf方法:

int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers , luckyNumbers .length);

第 2 個參數是新數組的長度。這個方法通常用來增加數組的大小:

luckyNumbers = Arrays.copyOf(luckyNumbers , 2 * luckyNumbers.length);

如果數組元素是數值型,那麼多餘的元素將被賦值爲 0 ; 如果數組元素是布爾型,則將賦值爲 false。相反,如果長度小於原始數組的長度,則只拷貝最前面的數據元素。

命令行參數

每一個 Java 應用程序都有一個帶 String arg[],參數的 main 方法。這個參數表明 main 方法將接收一個字符串數組, 也就是命令行參數

public class Message
{
    public static void main(String[] args)

如果使用下面這種形式運行這個程序,Massage這裏指的是具體類,參數下標從類名之後開始計算:

java Message -g cruel world

args 數組將包含下列內容:

args[0] -g
args[1] "cruel"
args[2] "world"

數組排序

int[] a = new int[10000];
Arrays.sort(a);

sort方法底層採用了快速排序的方法

java,util.Arrays

static String toString(type[]a) 5 . 0

返回包含 a 中數據元素的字符串, 這些數據元素被放在括號內, 並用逗號分隔。
參數: a 類型爲 int、long、short、 char、 byte、boolean、float 或 double 的數組。

static type copyOf(type[]a, int length)6
static type copyOfRange(type[]a , int start, int end)6
返回與 a 類型相同的一個數組, 其長度爲 length 或者 end-start, 數組元素爲 a 的值。

參數:
a 類型爲 int、 long、 short、 char、 byte、boolean、 float 或 double 的數組。
start 起始下標(包含這個值)0
end 終止下標(不包含這個值)。這個值可能大於 a.length。 在這種情況下,結果爲 0 或 false。
length 拷貝的數據元素長度c 如果 length 值大於 a.length, 結果爲 0 或 false ;否則, 數組中只有前面 length 個數據元素的拷貝值。

static void sort(type[] a)

採用優化的快速排序算法對數組進行排序。
參數:a 類型爲 int、long、short、char、byte、boolean、float 或 double 的數組。

static int binarySearch(type[]a , type v)
static int binarySearch(type[]a, int start, int end, type v) 6

採用二分搜索算法查找值 v。如果查找成功, 則返回相應的下標值; 否則, 返回一個負數值 。r -r-1 是爲保持 a 有序 v 應插入的位置。
參數:a 類型爲 int、 long、 short、 char、 byte、 boolean 、 float 或 double 的有序數組。
start 起始下標(包含這個值)。
end 終止下標(不包含這個值。)
v 同 a 的數據元素類型相同的值。

static void fill(type[]a , type v)

將數組的所有數據元素值設置爲 V。
參數:a 類型爲 int、 long、short、 char、byte、boolean、float 或 double 的數組。
v 與 a 數據元素類型相同的一個值。

static boolean equals(type[]a, type[]b)

如果兩個數組大小相同, 並且下標相同的元素都對應相等, 返回 true。
參數:a、 b 類型爲 int、long、short、char、byte、boolean、float 或 double 的兩個數組。

二維數組

Java 實際上沒有多維數組,只有一維數組。多維數組被解釋爲“數組的數組”

快速地打印一個二維數組的數據元素列表

System.out.println(Arrays.deepToString(a));

不規則數組

int[][] odds = new int[NMAX + 1][];
for (int n = 0; n <= NMAX ; n++)
	odds [n] = new int[n + 1];
for (int n = 0; n < odds.length; n++)
    for (int k = 0; k < odds[n].length; k++)
    {
    // compute lotteryOdds
    odds[n][k] = lotteryOdds;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章