//一维数组
String[] str=new String[5]; //长度为5的String (创建字符串型一维数组
String[] str=new String[]{“,”,“,”,“”,“”
String[] str={、’、’、’、’、’、’};
字符串数组初始化差异
首先,由于java数组中存储了对象的引用,所以应该理解不初始化就不能使用;
String[] str={“1”、“2”、“3”}和String[] str=newString[]{“1”、“2”、“3”}在内存中有何不同?
编译结果没有任何区别。 不能像一些人当然想说的那样在堆栈上分配空间。 所有Java对象都为堆栈分配空间。
这里的区别只是代码表示上的东西:
String[] str={“1”、“2”、“3”; 这种格式称为数组初始化表达式(ArrayInitializer ),只能在声明的同时赋值时使用。
另一方面,String[] str=new String[]{“1”、“2”、“3”}是一般形式的赋值,=符号的右侧被称为阵列文字,阵列文字表示哪个阵列是例如:
String[] str={“1”、“2”、“3”; //正确
String[] str=new String[]{“1" "、"2"、"3”} //也是正确的
而且,那是
字符串[ ] str;
str={“1”"、"2"、"3"; //编译错误
因为数组初始化表达式只能用于声明同时赋值。
更改:
字符串[ ] str;
str=new String[] {“1”,“2”,“3”}; //正确
又如下。
voidf(string[]str ) {
}
f () "1","2","3" ); //编译错误
正确的是:
f(newstring () )“1”、“2”、“3”);
String s=new String[30];
如果未显式赋值,则会自动将默认值指定为空值。
PS:
笔者犯的错误是在初始化数组时定义为String[] str=newString[]{},这样定义与创建长度为0的String型一维数组相同。 在后期给它赋值时,str[0]=”A”会抛出异常。