首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

String数组初始化,该如何处理

2012-01-22 
String数组初始化String[] str {1,2,3}与String[] str new String[]{1,2,3}在内存里有什

String数组初始化
String[] str = {"1","2","3"} 
与String[] str = new String[]{"1","2","3"}在内存里有什么区别?

[解决办法]
String[] str = {"1","2","3"} 
内存中是静态初始化
String[] str = new String[]{"1","2","3"}
则是动态分配内存

[解决办法]

Java code
1\Test.class1\Test.java2\Test.class2\Test.java3\Test.class3\Test.java4\Test.class4\Test.java
[解决办法]
编译执行结果没有任何区别。
更不可能像有些人想当然说的在栈上分配空间,Java的对象都是在堆上分配空间的。

这里的区别仅仅是代码书写上的:
String[] str = {"1","2","3"}; 这种形式叫数组初始化式(Array Initializer),只能用在声明同时赋值的情况下。
而 String[] str = new String[]{"1","2","3"} 是一般形式的赋值,=号的右边叫数组字面量(Array Literal),数组字面量可以用在任何需要一个数组的地方(类型兼容的情况下)。如:

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"});

从回帖看,太多人忽视这些基础知识的学习了。

热点排行
Bad Request.