色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java引用和賦值

錢良釵1年前8瀏覽0評論

Java是一種非常流行的編程語言,它支持引用和賦值兩種操作。在Java中,變量可以存儲基本數據類型的值,也可以存儲對象的引用。

引用和賦值是不同的概念。引用是指一個變量或者表達式所指向的對象。賦值是將一個對象的引用賦值給另一個變量。在Java中,如果一個變量存儲的是對象的引用,那么這個變量就可以調用該對象的方法和屬性。

// 聲明一個對象
MyObject obj1 = new MyObject();
// obj2引用了obj1所指向的對象
MyObject obj2 = obj1;
// 修改obj1的屬性
obj1.setProperty("abc");
// obj2也會受到影響,因為它們引用了同一個對象
System.out.println(obj2.getProperty());

上面的例子中,obj1和obj2都存儲了同一個對象的引用。當我們修改obj1所指向的對象的屬性時,obj2也會受到影響。這是因為它們都指向了同一個對象。

在Java中,如果我們將一個對象的引用賦值給另一個變量,那么這兩個變量就會引用同一個對象。但如果我們修改其中一個變量所引用的對象,那么另一個變量并不會受到影響。

// 聲明一個對象
MyObject obj1 = new MyObject();
// obj2引用了obj1所指向的對象
MyObject obj2 = obj1;
// 修改obj1所指向的對象
obj1 = new MyObject();
// obj2不會受到影響,因為它沒有指向新的對象
System.out.println(obj2.getProperty());

上面的例子中,我們先將一個對象的引用賦值給obj1和obj2,它們都引用了同一個對象。然后我們創建了一個新的對象,并將obj1的引用指向了新的對象。此時,obj2還是引用原來的對象,并不會受到影響。

在Java中,如果我們想將一個對象的內容復制給另一個對象,需要使用深拷貝。深拷貝會創建一個新的對象,并將原對象的內容復制到新的對象中。這樣就能夠保證兩個對象的內容是完全獨立的。

public class MyObject implements Cloneable {
private String property;
public MyObject(String property) {
this.property = property;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
public MyObject clone() throws CloneNotSupportedException {
MyObject cloned = (MyObject)super.clone();
cloned.setProperty(this.getProperty());
return cloned;
}
}
// 聲明一個對象
MyObject obj1 = new MyObject("abc");
// 復制obj1的內容到obj2中
MyObject obj2 = obj1.clone();
// 修改obj1的屬性
obj1.setProperty("def");
// obj2不會受到影響,因為它引用的是復制后的對象
System.out.println(obj2.getProperty());

上面的例子中,我們將一個對象的內容復制給了另一個對象,并進行了修改。此時,另一個對象并不會受到影響,因為它引用的是復制后的對象。這就是深拷貝的作用。