class A {
public void someMethod() {
String var = "Abhi";
var = "Abhishek";
}
}
Run Code Online (Sandbox Code Playgroud)
var变量会将Abhi和Abhishek存储在不同的内存位置还是Abhishek覆盖Abhi?
如果我使用这个表达式String var= new String();,那么呢?
鉴于此方法:
public void someMethod() {
String var = "Abhi";
var = "Abhishek";
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中有3个相关的东西:
var.此变量存储在堆栈中(因为它是一个局部变量)并且可以保存对某个对象的引用.String对象Abhi:它是在var声明后立即引用的第一件事.String对象Abhishek:var被修改为在第二行引用此对象var.因此,就内存而言:两个String对象存储在不同的空间中,彼此无关.var但是,只占用同一个地方(在单次调用期间foo,即).因此,参考Abhi是覆盖一个参考Abhishek.
如果var= new String();在该方法的末尾添加该行,那么该行将执行两项操作:
String表示空String和的新对象String对象的引用分配给该变量var.请注意,几乎没有理由使用该String构造函数,因为""(几乎)具有完全相同的效果.
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |