数组
一、一维数组
1.声明:
(1)char []c; 推广情况:char []c1,c2,c3;可以声明三个一维数组
(2)char c[];(不推荐,据说是为了C系程序员便于理解) 无对应的推广情况,若只是char c1,c2,c3[];只是c3成为一维数组
2.创建:(09-24更新)
(1)没有引用:new char[5];实际上这样的语法会报错,必须赋值给一个引用。
(2)有引用:char []c=new char[5];或者char []c; c=new char[5];
注:不能没有数组长度,否则无法编译,但是长度可以是变量,例如:
int m=9;char []c=new int[m];是被允许的。
char []a=new char[2]; Integer [] b=new Integer[3]; int []c=new int [2]; boolean [] d=new boolean[2]; System.out.println(a); //char数组输出2个方块(不知道是什么?),等同于 System.out.println(new char[2]);
System.out.println(d); //除char数组都输出地址,等同于 System.out.println(new boolean[2]); for(char s:a) { System.out.println(s); //遍历未初始化的char数组,输出2个方块,同上直接输出一样 } for(Integer s:b) { System.out.println(s); //遍历未初始化的Integer数组,输出null,包括未初始化的String及其他对象引用都是这样 } for(int s:c) { System.out.println(s); //未初始化的int输出0 } for(boolean s:d) { System.out.println(s); //未初始化的boolean输出false }
其实数组创建很简单,上面的篇幅都用在Java自动初始化上了,其余诸如long、short、byte、double、float都会被设置为0或者0.0.
3.初始化:
(1)普通数组:char []c={'a','b'};再次直接输出,会打印出ab,但例如int []={5,8,9};直接输出地址,也就是说除了char数组直接打印数组都会输出地址。
数组初始化和声明必须一起,否则会报错,例如:
char []a= new char[2]; a= {'a','b'}; //报错
提示报错Array constants can only be used in initializers数组只能在声明赋值?
正常赋值:
int [] b= {5,8,9};
(2)对象数组:String []s={"ab","cd"};或者String []s={new String("ab"),new String("cd")};都是等价的,原因在下一篇字符串说明。
Integer []i={1,2};或Integer []i={new Integer(1),new Integer(2)};
二、多维数组
1.声明
与一维数组相同有两种方式:int [][]m;(推荐) 可推广至int [][] m1,m2,m3;
int m[][];(不推荐);
2,创建
(1)直接创建:int [][]m=new int[2][2];
(2)从高到低创建:
int [][]m=new int[2][]; //前两句等价于int[][] m;m=new int[2][]两句的组合 m[0]=new int[2];
m[1]=new int[2];
也是创建了一个2*2的二维数组。
注意不能从低到高创建:
int [][]m=new int[][2]; //报错,Cannot specify an array dimension after an empty dimension
3.初始化
普通:int[][] m={{1,2},{3,4}};
而不能写成
int [][]m=new int[2][];
m[0]= {5,6};
m[1]={7,8}; 也是只能在声明时初始化。
对象:String [][] s={{new("aa"),new("bb")},{new("cc"),new("dd")}};
或者是等价地有:String [][]s={{"aa","bb"},{"cc","dd"}};
例如:
String[][]s= {{"aa","bb"},{"a","c"},{"ff"}}; for(String str[]:s) { for(String ss:str) System.out.println(ss); //二维数组的遍历 }
输出:aa
bb
a
c
ff