Java中的“对象”与“对象变量”?

时间:2013-07-02 18:57:40

标签: java object

我正在自学Java,我书中的一个评论练习要求“对象”和“对象变量”之间的区别。

我知道对象是什么(类的特定实例),但我似乎无法在书中找到“对象变量”这个术语(没有答案部分)或在互联网上。

有谁知道这个词的含义?

6 个答案:

答案 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();
  • box 是对象变量,它存储对新实例化的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();