java中对象别名使用_JAVA中的别名现象
問題的提出:
在java中,對基本數據類型的賦值時,是將數據從一個地方復制到另外一個地方,當a=b時,將b的內容復制給a,若修改a時,b并不會受到這種修改的影響。
在對對象進行賦值時,當我們對一個對象進行操作時,實際上是對該對象進行引用,倘若將一個對象賦值給另一個對象,實際上是將引用復制到另外一個地方。
圖示
代碼演示
class Tank{
float level;
}
public class Assignment {
public static void main(String[] args) {
Tank t1=new Tank();
Tank t2=new Tank();
t1.level=0.9f;
t2.level=10.05f;
System.out.print("t1.level:"+t1.level+",t2.level:"+t2.level);
t1=t2;
System.out.print("t1.level:"+t1.level+",t2.level:"+t2.level);
t1.level=0.7f;
System.out.print("t1.level:"+t1.level+",t2.level:"+t2.level);
}
}
結果輸出:
t1.level:0.9,t2.level:10.05
t1.level:10.05,t2.level:10.05
t1.level:0.7,t2.level:0.7
為了避免別名情況出現,一般不對對象進行賦值,可使用t1.level=t2.level進行賦值,這樣可以使得對象相互獨立。
將一個對象傳遞給方法時,也會產生別名問題,代碼示例
class Letter{
char c;
}
public class PassObject{
static void f(Letter y) {
y.c='z';
}
public static void main(String[] args){
Letter x=new Letter();
x.c='a';
System.out.println("x.c="+x.c);
f(x);
System.out.println("x.c="+x.c);
}
}
結果演示:
x.c=a
x.c=z
總結
以上是生活随笔為你收集整理的java中对象别名使用_JAVA中的别名现象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库char类型长度_mys
- 下一篇: java impliments,dubb