我认为一旦我们定义了大小,就不能更改 String 数组的长度。但我不确定为什么它允许我在这里更改它(对于代码片段)?
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”时大小为 3 然后大小更改为 4,因为“roleNameArra”等同于“roleNameArray”。
问题:-
在这种情况下,String 数组的大小是否已更改?
如果不是,在这种 JAVA 情况下,内存中会发生什么?(java 版本使用 1.8)
在该方法中,addMoreValues
您正在创建一个新数组,该数组与旧数组无关。仅因为您roleNameArray
使用对新数组的引用填充命名的变量,您才会看到更新后的长度。如果您只是在addMoreValues
不更新局部变量的情况下调用(因此没有roleNameArray =
),则将使用旧的且未更改的数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句