我试图了解以下代码的工作原理:
ArrayList<String> aInt = new ArrayList<String>();
Object[] bInt = null;
aInt.add("1a");
aInt.add("2b");
aInt.add("3c");
aInt.add("4d");
bInt = new String[aInt.size()];
aInt.toArray(bInt);
for(int i=0; i < bInt.length; i++){
System.out.println(bInt[i]);
}
我理解除了aInt.toArray(bInt)行之外的所有内容;我的问题是,如果你从未做过bInt = aInt.toString(),那么如何使用这个来更新bInt?我认为java只按值传递项目而不是引用,所以我这让我感到难过。
我确实确认System.out.println语句打印出1a,2b,3c和4d。
感谢您的帮助
答案 0 :(得分:1)
Java只传递值,但任何对象的值,包括那些重新表示原始值(如String和Integer)的值都会传递一个引用值。
因此,对象在逻辑上总是按引用传递,即使从技术上讲,你可以认为代码是按值传递的。
例如,如果将对象引用从局部变量传递到另一个方法,则原始方法中的局部变量将不会更改(即,在调用后它仍将引用同一个对象),即使对象是它所指的可以修改。因此,不可变对象的巨大价值的一部分(如String)。