黑马程序员技术交流社区

标题: Java数组 [打印本页]

作者: 百里青山    时间: 2016-4-11 12:44
标题: Java数组
数组是存放多个单一元素的容器。数组有长度,如下图的数组长度为10,则可以放下10个元素,每个元素有自己的索引
1.声明数组
类型[] 或 []类型 数组变量名
如int[] ints; 或 []String strs;

2.初始化数组
方式1:显示初始化(必须结合声明数组一起使用)
            类型[] 或 []类型 数组变量名 = {元素1,...,元素n};
方式2:系统默认初始化
            类型[] 或 []类型 数组变量名 = new 类型[长度] 或 new [长度]类型
            数组变量名 = new 类型[长度] 或 new [长度]类型


       int[] ints1 = { 1, 2, 3 }; // 方式1

       int[] ints2 = new int[3]; // 方式2
  
       int[] ints3;
       ints3 = new int[3] // 方式2
  
       int[] ints4;
       ints4 = { 1, 2, 3 } // 错误,显示初始化必须结合数组声明一起使用
3.获取数组元素(获取值或设置值)
数组变量名[下标]
数组下标从0开始,最大下标是数组长度-1;超出小标范围的访问报数组越界异常。
获取到了数组元素后,其实就获取到的值
你还可以将它重定义值
       int[] ints = { 1, 2, 3 }; // 声明并初始化数组
       System.out.println(ints[0]); // 获取数组第一个元素,打印1
       ints[0] = 0; // 修改数组第一个元素的值
       System.out.println(ints[0]); // 获取数组第一个元素,打印0


4.数组长度属性length
       数组变量名.length


       int[] ints = { 1, 2, 3 }; // 声明并初始化数组
       int max = ints.length - 1; // 获取数组的最大下标
       ints[max] = 4; // 修改数组最后一个元素的值,修改成4
      
// 最大下标是2,这里报异常java.lang.ArrayIndexOutOfBoundsException
       ints[3] = 1;
1)  不能在声明时指定数组长度,int[5] ints是错误的,数组长度在初始化时指定。

5.多维数组
可以看做是以数组为元素的数组。以二维数组举例如下:
       int[][] ints1 = {{1},{1,2,3},{3,4}}; // 方式1
// ints1[0]是一个长度为1的一维数组;ints1[1]是一个长度为3的一维数组...
  
       int[][] ints2 = new int[3][5]; // 方式2
// ints2的每一个元素,都是一个长度为5的一维数组
  
       int[][] ints3 = new int[3][]; // 方式2,从低维到高维的顺序初始化
       ints3[0] = new int[1];
       ints3[1] = new int[3];
       ints3[2] = new int[2];
// ints3[0]是一个长度为1的一维数组,ints3[1]是一个长度为3的一维数组...

1)  多维数组的声明和初始化,应该按高维到低维的顺序进行
int[][] ints = new int[][3]; // 错误

6.数组的拷贝
拷贝方法:System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

7.遍历数组int[] src = { 1, 2, 3 };
int[] dest = new int[3];
System.arraycopy(src, 0, dest, 0, src.length);
  
for (int i = 0; i < dest.length; i++) {
       System.out.println("当前元素:" + dest + ",下标是:" + i);
}
  
for (int m:dest) {
       System.out.println("当前元素:" + m + ",无法直接获得下标");
}



8.Arrays数组工具类
比较数组是否相等:Arrays.equals (Arrays.deepEquals用于多维数组的比较)
填充数组:Arrays.fill
数组排序:Arrays.sort
已排序数组中查找:Arrays.binarySearch()
字符串化:Arrays.toString
转化为List:Arrays.asList



作者: cyq1029    时间: 2016-4-11 16:55
学习了!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2