我正在自学Java,我书中的一个评论练习要求“对象”和“对象变量”之间的区别。
我知道对象是什么(类的特定实例),但我似乎无法在书中找到“对象变量”这个术语(没有答案部分)或在互联网上。
有谁知道这个词的含义?
答案 0 :(得分:14)
我会咬人。
Object是实例本身,而Object Variable是对Object的引用。
这是一个人为的例子:
Object o = new Object();
Object ref1 = o;
在他的情况下,有一个Object的实例,但它由两个对象变量引用:o和ref1。
当Object变量不再引用Object时,Object将被垃圾收集。
答案 1 :(得分:12)
它是“实例变量”的同义词:
class A {
static int m; // <-- class variable
int n; // <-- instance variable
...
}
显然,这个术语并不常用,只要坚持使用“实例变量”,最好避免任何潜在的歧义。
答案 2 :(得分:1)
TL;博士; fmoe
我在Cay Horstmann的一篇评论中发现了同样的问题, Big Java,Early Objects (John Wiley&amp; 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
如果你将Cay的定义与来自The Java Tutorials和其他众多来源的信息进行比较,这会让人感到有些困惑,但我相信这是你在Cay的书中所提出的问题的答案。
我更喜欢这个观点=&gt;对象的内存位置存储在对象引用中(每个Cay的对象变量)。当我在对象上调用方法时,我指定对象引用,后跟点(。)运算符,后跟方法名称。
objectReference.method();
如果类的公共接口允许访问其中一个或多个实例化对象的字段(AKA实例变量,对象变量,类成员变量,属性或属性......取决于编程语言和文档),那么我可以通过指定对象引用,然后是点(。)运算符,后跟字段名称
来访问它 objectReference.fieldName;
为什么我更喜欢这个?我不是很多次使用变量作为名词的粉丝;重载的语义让我的思维简单。
答案 3 :(得分:0)
@Faaris Cervon:对象变量是不创建任何对象但引用某个对象的变量。 exmp:日期d1 =新日期();
d1是一个对象。
日期d2; d2不是一个对象,它既不引用任何对象,但它可以保存任何类型为date的对象。 D2 = D1; //有效。
因此d2是一个对象变量。 重要的是要记住,对象变量实际上不包含对象,但它引用了某个对象。
答案 4 :(得分:0)
我发现了一些对你有帮助的东西。 像对象,对象变量和对象引用这样的词很少。
对象变量和对象引用与对象变量存储对象引用的方式类似,其中对象引用描述对象的位置。 (你可能会对此感到困惑,所以只考虑它们一样)
考虑一个例子::
Class Car {
....
....
}
汽车AudiQ7; // S1
汽车AudiQ8 =新车(); // S2
在S1中,我们只创建了对象。意味着它不是指记忆。
在S2中我们创建了一个对象变量/引用意味着它引用了内存位置。
答案 5 :(得分:0)
在大学里,它认为对象变量是:“一个变量,其类型是一个类,并且它持有对作为该类实例的对象的引用”
Object thing = new Object();