仍在尝试理解Java中的面向对象编程

时间:2016-02-05 03:55:46

标签: java

假设有一个名为Hello的类,我如何将名为var1和var2的变量声明为对类Hello中对象的引用? 我以为它只是Hello var1,var2;

另外,只使用默认构造函数构造Hello类对象的实例,它只是Hello hello = new Hello();

最后我的最后一个问题是,如果我使用默认构造函数实例化Hello类的对象,并将该对象分配给名为var1的变量,那么它就是Hello var1 = new Hellow();.如何将名为var1的对象的引用分配给名为var2

的变量

我知道有一个术语来描述变量var1和var2的当前状态,但我想不到它

1 个答案:

答案 0 :(得分:0)

给出了测试示例来说明事情

public class Hello {
    Hello var1, var2;
    public static void main(String[] args){
        Hello h1 = new Hello();
        h1.var1 = h1;
        System.out.println("h1.var1 ---- "+ h1.var1);

        Hello h2 = new Hello();
        h1.var2 = h2;
        System.out.println("h1.var2 ---- "+ h1.var2);

        h1.var2 = h1.var1;

        System.out.println("h1.var1 ---- "+ h1.var1);
        System.out.println("h1.var2 ---- "+ h1.var2);
    }
}


    Output :- 

    h1.var1 ---- Hello@19e0bfd
    h1.var2 ---- Hello@139a55
    h1.var1 ---- Hello@19e0bfd
    h1.var2 ---- Hello@19e0bfd
  

假设有一个名为Hello的类,我将如何声明变量   将var1和var2命名为对Hello类中对象的引用?一世   假设它只是Hello var1,var2;

你可以看到有两个声明为同一个类的变量可以引用Hello类实例。

  

还要构造Hello类对象的实例   使用默认构造函数,它只是Hello hello = new   你好();

是的,每个类都有一个默认的构造函数,所以你可以像这样初始化类。

  

最后我的最后一个问题是,如果我要实例化一个对象   class Hello使用默认构造函数并将该对象赋值给   变量名为var1,它只是Hello var1 = new Hellow();.   如何将对名为var1的对象的引用分配给   变量名为var2

当您看到输出时,var2的哈希码与var1语句后的h1.var2 = h1.var1相同。这表明var2以前的引用被var1引用替换。因此,不会复制对象,但会复制对对象的引用。检查hashcode var1var2的相同echo Form::token();

多数民众赞成!。