【发布时间】:2017-04-19 11:52:20
【问题描述】:
我认为一旦我们定义了大小,字符串数组的长度就不能改变。 但我不确定为什么它允许我在这里更改它(对于一段代码)?
public class Test1 {
public static void main(String[] args) {
//size =3
String[] roleNameArray = { "a", "b", "c" };
// I also tried with
//String[] roleNameArray = new String[3];
//roleNameArray[0]="a";
//roleNameArray[1]="b";
//roleNameArray[2]="c";
System.out.println(roleNameArray.length);
roleNameArray = addMoreValues();
// size changed to 4
System.out.println(roleNameArray.length);
}
public static String[] addMoreValues() {
final String[] roleNameArra = new String[4];
roleNameArra[0] = "a";
roleNameArra[1] = "b";
roleNameArra[2] = "c";
roleNameArra[3] = "d";
return roleNameArra;
}
}
输出:- 3 4
这里我们初始化数组“roleNameArray”时的size=3 然后大小变为 4,因为“roleNameArra”等同于“roleNameArray”。
问题:-
这种情况下String数组的大小变了吗?
如果不是,在这种 JAVA 情况下,内存中会发生什么? (爪哇 使用的版本 1.8)
【问题讨论】:
-
您创建一个数组并重新分配它
-
不,大小没有改变,您只是在同一个变量中存储了一个全新且不相关的数组。
-
如果你不知道大小,使用类似 ArrayList
(docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) -
好的,谢谢你的回答。但是在这种情况下,旧数组会发生什么,它会成为“垃圾收集器”的一部分吗?
-
老实说,你自称是“高级 Java 开发工程师”,却问这么基本的问题?
标签: java arrays string memory-management