在java中,对象被认为是变量吗?

时间:2017-08-02 20:29:08

标签: java class variables

我正在研究的一个来源将数组定义为“一个名称下的变量集合,其中变量通过索引号访问。”

但后来我意识到你可以拥有一个对象数组(或者至少是一个指向对象的数组)。

这让我想知道在java中定义了什么变量,因为我没有将对象视为变量。 Jenkov Tutorials将变量称为“一块可以包含数据值的内存”。

既然我认为一个对象符合这个定义,那么一个对象被认为是变量吗?

4 个答案:

答案 0 :(得分:2)

调用数组a"变量集合"可以说已经扩展了这个定义。但是数组肯定是一组引用,可以指向内存中的不同对象,并且每个这样的引用可以合理地称为变量。

要求"是一个变量对象"首先是有点奇怪。在Object o = new Object()中,o显然是一个变量,但要记住它是对堆中对象的引用,而不是对象本身。

老实说,"变量"是一个非常灵活,定义不明确的术语 - 字段是变量吗?方法的返回结果?这取决于他们的谈话以及他们今天使用的模糊定义。

答案 1 :(得分:1)

  

是一个被认为是变量的对象?

不,这是两件截然不同的事 第一个(对象)是值,第二个(变量)是引用对象的一种方式,通常是使用它(例如,在它上面调用一系列方法)。
例如,当你写:

new Dog()

您实例化Dog。尼斯。但是假设你想在饥饿时喂它 如果你没有办法在这个对象上链接一系列方法,你就不能。

通过将Dog的引用存储在dog变量中,您可以执行此操作:

Dog dog = new Dog();
if (dog.isHungry()){
   dog.feed();
}
  

Jenkov Tutorials引用一个变量作为“一块记忆   可以包含数据值。“

它说同样的事情。

但是这个:

  

我正在研究的一个来源将一个数组定义为“一个集合   一个名称下的变量,其中变量通过索引访问   数字“。

颇具误导性 数组是一个对象,其状态包含数组的元素等 引用元素的方式是Array类的实现细节,我不会确认每个元素都存储在特定变量中。

答案 2 :(得分:0)

使用保留字new调用构造函数时,会创建一个对象。

例如:

Object a = new Object();

a将是创建的新对象的变量,并将转到该对象的保留内存。您正在实例化该新变量,并且该变量与该对象相关联。

答案 3 :(得分:-1)

Hope might this will help you to understand it better...

class Bulb
    {
    private int w;
    public void setWattage(int e)
    {
    w=e;
    }
    public int getWattage()
    {
    return w;
    }
    }
    class Test
    {
    public static void main(String args[])
    {
    Bulb b[];
    b=new Bulb[2];
    b[0]=new Bulb();
    b[1]=new Bulb();
    b[0].setWattage(60);
    b[1].setWattage(100);
    System.out.println(b[0].getWattage());
    }
    }

这里b [0]和b [1]是具有两个Bulb对象地址的引用变量