1
A
回答
6
此:
String s;
不会创建一个 “空字符串”,它只是一个未初始化的变量。
此:
s = "foo";
集,变量来引用一个String
对象。它是不可变的对象,而不是变量。
2
5
您需要了解变量和对象之间的差异。
考虑以下代码:
String x = "hello";
for (int i = 0; i < 10; i++) {
x = x + i;
}
这最终将建立11串对象,但只有两个变量参与(x
和i
)。在任何点处,的值的i
是整数(0-10)并且的值的x
是对String
的参考。 (这可能是null
过,但是偏偏没有在这个例子中)。
明白x
不是一个对象是很重要的,也不是值x
对象。
如果它有助于把它在物理上,考虑我的家庭住址一张纸就可以了:
- 这张纸就像是变量 - 这是“某处可以存储的值”。
- 写在纸上的地址是一样的参考 - 它是找到对象
- 房子本身就像是对象的一种方式。
这张纸或地址都不是房子本身。如果您在纸上擦写地址并写入其他地址,则不会对我的房屋进行任何更改 - 就像更改x
的值不会对示例代码中的字符串对象本身所做的任何更改一样。
相关问题
- 1. 在Java中File.canExecute()究竟做了什么?
- 2. 当我在C++中执行buffer1.push_back(buffer2.front())时究竟发生了什么?
- 3. Proc :: Background究竟发生了什么?
- 4. 这是如何工作的?究竟发生了什么?
- 5. Java中的JPanel发生了什么?我究竟做错了什么?
- 6. 在android中的事务失败后究竟发生了什么?
- 7. 究竟是什么触发ng变化?
- 8. 当你在C中引用静态变量时究竟发生了什么?
- 9. 在telnet/SSH连接中究竟发生了什么?
- 10. 当PictureBox.Visible设置为True时,C#中究竟发生了什么?
- 11. 在春季,究竟是什么运行了quarz cron工作?
- 12. 在Rust中,究竟是什么是可变的和不可变的借入?
- 13. 需要知道什么在此代码究竟发生
- 14. 字符数据究竟是什么?
- 15. 怎么看的混帐究竟发生了什么合并
- 16. VHDL中的变量究竟是什么?
- 17. visibleContentsAsDataURL究竟做了什么?
- 18. KeyListener究竟做了什么?
- 19. document.normalize究竟做了什么?
- 20. MapView.preLoad()究竟做了什么?
- 21. handleParkingUpdate()究竟做了什么?
- 22. MIBCC.EXE究竟做了什么?
- 23. UserTransactionManager究竟做了什么
- 24. rbind.fill.matrix究竟做了什么?
- 25. rangeOfCharacterFromSet究竟做了什么?
- 26. Panel.IsItemsHost究竟做了什么?
- 27. “setContentView”究竟做了什么?
- 28. fillMode究竟做了什么?
- 29. .selectAll()究竟做了什么?
- 30. JspFragment.invoke究竟做了什么?
OH我看,谢谢 – Lucas 2012-03-24 21:42:44
我不会说这是一个未初始化的引用 - 我会说这是一个未初始化的*变量*。我喜欢在变量,引用和对象之间进行区分。 ('s'的*值*是初始化后的引用;'s'本身不是引用。) – 2012-03-24 21:46:58
@Jon:是的,这是一个重要的区别。措辞更新... – 2012-03-24 21:50:00