在Java中创建两个具有相同名称的对象

时间:2017-12-29 04:43:41

标签: java

我有一个班级名Planet,我正在制作主要的对象。

Planet planet1 = new Planet("High Temperature","No Water);
Planet planet2 = new Planet("Low Temperature","Ice");

但是,我看到我的导师这样做了:

Planet planet1 = new Planet("High Temperature","No Water);
       planet1 = new Planet("Low Temperature","Ice");

基本上,我的导师也在创建两个对象。我知道在调用构造函数时基本上会形成一个新对象,但我一直认为这两个对象也需要有不同的名称。

如上所示,使用名称planet1创建了两个对象。

另外,使用上面提到的两种不同方法创建两个对象有什么不同。

3 个答案:

答案 0 :(得分:0)

  

let label = UILabel(frame: CGRect(x:0, y:0, width:400, height:50)) label.backgroundColor = .clear label.numberOfLines = 2 label.font = UIFont.boldSystemFont(ofSize: 16.0) label.textAlignment = .center label.textColor = .black label.text = "This is a\nmultiline string for the navBar" self.navigationItem.titleView = label

在上面的例子中,你有两个不同的对象引用,即planet1和planet2。

Planet planet1=new Planet("High Temperature","No Water);
  Planet planet2= new Planet("Low Temperature","Ice");

这里只有一个可访问的对象引用planet1。当第二行被执行时,第一个对象的引用不再可用,因为它已经被第二个对象的引用覆盖了。

答案 1 :(得分:0)

在这两种情况下,您都要创建 func getCPUArch() { #if arch(arm) print("this is a 32bit system") #elseif arch(arm64) print("this is a 64bit system") #endif } 类的两个不同实例。在第一种情况下,您将高温行星分配给变量Planet,然后创建一个新行星(低温),将其分配给相同的变量(planet1),丢弃对该变量的引用你早期的高温行星。 Java的垃圾收集器,意识到第一个行星不再可达,从堆中删除它,回收它的内存。

在第二种情况下,您有两个不同的Planet对象和两个类型为planet1的不同变量,每个变量都存储对两个对象之一的引用。

答案 2 :(得分:0)

您接近对象实例化的方式会创建两个变量(planet1和planet2),并引用两个不同的Planet对象。其他操作可以访问这些对象。

教师的方法首先实例化变量planet1引用的Planet对象。然后丢弃引用,并将其设置为指向新构造的Planet对象。在这种情况下,只能访问低温和冰的行星。无法再访问以前具有高温和无水的Planet对象。