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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章