我有一个班级名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
创建了两个对象。
另外,使用上面提到的两种不同方法创建两个对象有什么不同。
答案 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对象。