創建一個數字數組時, 所有元素都初始化爲 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;
}