目录
声明数组后立即对其进行初始化。
数组可以在声明的同时初始化,方法是写入
示例代码
static void arraySample() { String[] s = {"苹果"、"柑橘"、"香蕉"}; } System.out.println(s[1]);
输出结果:
未完成
获取数组中元素的个数 -。 长度
如果想知道数组中有多少个元素,可以使用 length,但需要注意的是,length 是一个字段,而不是一种方法。
示例代码
static void lengthSample() { String[] s1 = {"苹果"、"柑橘"、"葡萄"}; String[] s2 = {}; System.out.println(s1.length); System.out.println(s2.length); }
输出结果:
3 0
复制数组 复制
如果你想创建一个与数组完全相同的数组,克隆很有用。
示例代码
static void cloneSample() { String[] s1 = {"苹果"、"柑橘"、"葡萄"}; String[] s2 = s1.clone(); System.out.println(s1[0] + ' ' + s1[1] + ' ' + s1[2]); System.out.println(s2[0] + ' ' + s2[1] + ' ' + s2[2]); }
输出结果:
苹果 橘子 葡萄 苹果 橘子 葡萄
复制数组 System.arraycopy
Java 中数组的初始化大小是固定的。如果想在创建数组后增加其大小,则需要使用 System.arraycopy。
arraycopy 用于复制数组,与 clone 类似,但比 clone 允许更多的微调。
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src...复制对象的数组 srcPos...要复制的源数组(src)的起始位置 dest...目标数组 destPos...要复制的目标数组(dest)的起始位置 length...要复制的元素个数
示例代码
static void arraycopySample() { String[] s1 = {"苹果"、"柑橘"、"葡萄"}; String[] s2 = new String[5]; System.arraycopy(s1, 0, s2, 0, 3); s2[3] = "香蕉"; s2[4] = "樱桃"; System.out.println(s1[0] + " " + s1[1] + " " + s1[2]); System.out.println(s2[0] + " " + s2[1] + " " + s2[2] + " " + s2[3] + " " + s2[4]); }
输出结果:
苹果 橘子 葡萄 苹果 橘子 葡萄 香蕉 樱桃
使用 arraycopy 连接数组也很方便。
示例代码
static void joinArraySample() { String[] s1 = {"苹果"、"柑橘"、"葡萄"}; String[] s2 = {"香蕉"、"樱桃"、"Momo"}; int rLen = s1.length + s2.length; String[] rStr = new String[rLen]; //初始化 s1 和 s2 长度的数组 System.arraycopy(s1, 0, rStr, 0, s1.length); System.arraycopy(s2, 0, rStr, s1.length, s2.length); //设置目标数组的起始位置是关键 System.out.println(rStr[0] + " " + rStr[1] + " " + rStr[2] + " " + rStr[3] + " " + rStr[4] + " " + rStr[5]); }
输出结果:
苹果 橘子 葡萄 香蕉 樱桃 莫莫
创建多维数组
通过在数组中创建数组,可以创建多维数组。例如,这在存储表格数据时非常有用。
示例代码
static void twoDArraySample() { int[] a1 = {38, 84, 98}; int[] a2 = {32, 11, 56}; int[] a3 = {82, 77, 8}; int[][] twoDArray = {a1, a2, a3}; for (int[] a : twoDArray) { for (int score : a) { system.out.print(score + " "); } } System.out.println(""); } } }
输出结果:
38 84 98 32 11 56 82 77 8