请考虑以下代码。为什么Test类的对象是在同一个类Test中创建的?对象ob1和ob2有什么区别吗?
class Test {
int a;
Test(int i) {
a = i;
}
Test incrByTen() {
Test temp = new Test(a+10);
return temp;
}
}
class RetOb {
public static void main(String args[]) {
Test ob1 = new Test(2);
Test ob2;
ob2 = ob1.incrByTen();
System.out.println("ob1.a: " + ob1.a);
System.out.println("ob2.a: " + ob2.a);
ob2 = ob2.incrByTen();
System.out.println("ob2.a after second increase: "
+ ob2.a);
}
}
答案 0 :(得分:0)
显然存在差异:他们的数据成员具有不同的值。换句话说,虽然这些对象属于同一类,但它们处于不同的状态。
incrByTen
可以增加相同对象的值而不是创建新对象吗?的绝对强>
那么为什么还要回来一个新对象呢?这可能是以下原因之一:
makeACopy
,那么你希望它创建一个同一个类的新对象,而不是返回原始对象。String
类 - 在字符串中追加字符串或替换序列不会改变原始字符串,但它会创建新的字符串。