我正在自学Java,我的书中的一项复习练习要求解释“对象”和“对象变量”的区别。
我知道什么是对象(类的具体实例),但似乎无法在书(没有答案部分)或互联网上找到“对象变量”这个术语。
有人知道这个术语的意思吗?
我正在自学Java,我的书中的一项复习练习要求解释“对象”和“对象变量”的区别。
我知道什么是对象(类的具体实例),但似乎无法在书(没有答案部分)或互联网上找到“对象变量”这个术语。
有人知道这个术语的意思吗?
我来翻译。
Object是实例本身,而Object Variable是对Object的引用。
以下是一个人为制造的例子:
Object o = new Object();
Object ref1 = o;
在这种情况下,有一个对象的单个实例,但它被两个对象变量o和ref1引用。
当一个对象不再被对象变量引用时,该对象将被垃圾回收。
"实例变量"的同义词:
class A {
static int m; // <-- class variable
int n; // <-- instance variable
...
}
显然,这个术语并不常用,最好避免任何潜在的歧义,只需坚持使用“实例变量”即可。
n
的一个独立副本。而变量m
的值仅存在于该类的所有实例中一次。 - jhamtl;dr;fmoe
:请概括简短地阐述。我在Cay Horstmann的《Big Java, Early Objects》(John Wiley&Sons,2013),第73页上的评论练习中遇到了同样的问题。
Cay 将对象变量定义为存储指向对象内存位置的引用的变量(其类型为类)。
Rectangle box = new Rectangle();
可以存在多个对象变量,它们存储相同的对象内存位置引用。
Rectangle box = new Rectangle(5,10,20,30);
Rectangle box2 = box;
调用一个改变对象的mutator/mutagenic方法(在被调用的对象上进行修改)会修改对象,因为对象变量引用了相同的对象内存位置。
box2.translate(15, 25);
System.out.println(box.getY()); // 35.0
System.out.println(box2.getY()); // 35.0
objectReference.method();
objectReference.fieldName;
为什么我更喜欢这种方式?我不喜欢过多地使用变量作为名词;重载的语义会让我这个简单的头脑混乱。
@Faaris Cervon:对象变量是不创建任何对象但引用某些对象的变量.. 例如:Date d1 = new Date();
d1 是一个对象。
date d2; d2 不是一个对象,也不引用任何对象,但它可以持有任何类型为 date 的对象。 d2 = d1; // 有效。
因此,d2 是一个对象变量。 重要的是要记住对象变量实际上不包含对象,而是引用某些对象。
我找到了一些可以帮助你的东西。
有一些词像是object、object variable和object reference。
Object variable和object reference在某种程度上是相似的,因为object variable存储对象的引用,而object reference描述了对象的位置。(你可能会感到困惑,所以就把它们视为相同的)
考虑一个例子:
Class Car{
....
....
}
Car AudiQ7; //S1
Car AudiQ8 = new Car(); //S2
在S1中,我们只创建了对象。这意味着它不引用内存。
在S2中,我们创建了一个对象变量/引用,这意味着它引用了内存位置。
Object thing = new Object();