java字符串数组初始化和赋值

java字符串数组初始化和赋值

//一维数组

String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组

String[] str = new String[]{"","","","",""};

String[] str = {"","","","",""};

String数组初始化区别

首先应该明白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"}是一般形式的赋值,=号的右边叫数组字面量(ArrayLiteral),数组字面量可以用在任何需要一个数组的地方(类型兼容的情况下)。如:

String[] str = {"1","2","3"}; // 正确的

String[] str = new String[]{"1","2","3"} // 也是正确的

String[] str;

str = {"1","2","3"}; // 编译错误

因为数组初始化式只能用于声明同时赋值的情况下。

改为:

String[] str;

str = new String[] {"1","2","3"}; // 正确了

又如:

void f(String[] str) {

}

f({"1","2","3"}); // 编译错误

正确的应该是:

f(new String[] {"1","2","3"});

还可以 String s=new String[30];

如果没有显式赋值,则系统自动赋默认值null。

PS:

笔者所犯错误为在初始化数组的时候定义为String[] str = newString[]{},如此定义相当于创建了创建一个长度为0的String(字符串)型的一维数组。在后期为其赋值的时候str[0]="A",就会抛出异常。

相关推荐

汽车性能的提升可以通过哪些改装实现?
365卫士杀毒清理大师

汽车性能的提升可以通过哪些改装实现?

📅 07-27 👁️ 908
“绿帽子”这个词究竟是怎么来的?
365bet体育备用

“绿帽子”这个词究竟是怎么来的?

📅 07-17 👁️ 911
《商务部关于执行联合国安理会第2371号决议禁止同朝鲜新设合资合作企业和追加合资企业投资的公告》商务部公告2017年第47号