可以说我有一个汽车类,我为这个汽车类创建了一个参考变量。每次我创建一个对象时,新的引用变量?
Car car = new Car()
- 相当直截了当。
我通过调用编辑轿车的特性:car.setColor("Red"), and car.setPrice(2500).
现在,让我们说,我想创建一个新的Car对象,我必须创建这样一个新的参考变量:Car car2= new Car();
或可我只是简单地为新车使用原始参考变量?
可以说我有一个汽车类,我为这个汽车类创建了一个参考变量。每次我创建一个对象时,新的引用变量?
Car car = new Car()
- 相当直截了当。
我通过调用编辑轿车的特性:car.setColor("Red"), and car.setPrice(2500).
现在,让我们说,我想创建一个新的Car对象,我必须创建这样一个新的参考变量:Car car2= new Car();
或可我只是简单地为新车使用原始参考变量?
对象不过是在堆中创建的临时缓冲区。
每当您创建一个新对象时,堆中都会提供一个新的缓冲区(或空间)。
您当然可以重用您的第一个car
变量,这在某些情况下(例如循环)很常见。请记住,原始变量的引用将被替换,因此除非您在其他位置存储对该对象的引用(例如在另一个对象的集合或字段中),否则该对象将被垃圾收集。
简短回答:这取决于你。
长答案:您可以使用任何一种方法。如果您创建一辆新车,您创建的前一辆车不会受到影响,因为不同的物体是完全独立的。比方说,
Car car1 = new Car();
car1.setColor("Red");
car1.setPrice(2500);
Car car2 = new Car();
car2.setColor("Blue");
car2.setPrice(3000);
现在car1
和car2
有不同的颜色和价格。如果更改car1
的值,则car2
不会受到影响。
或者,你重用car1
:
Car car1 = new Car();
car1.setColor("Red");
car1.setPrice(2500);
car1 = new Car(); //You created the new car here
car1.setColor("Blue");
car1.setPrice(3000);
此代码后,car1
原来的内容丢失*。如果您认为car1
不再有用,并且可以丢弃其内容,则可以使用此选项。
*注意:car1
的对象仍在内存中。但它是无法访问的。
扩展在扫地的回答是:
如果我们不是这样做:
Car car1 = new Car();
car1.setColor("Red");
car1.setPrice(2500);
Car car2 = car1;
car2.setColor("Blue");
car2.setPrice(3000);
然后,两个CAR1和CAR2将有蓝色的颜色和3000的价格,因为他们指指同一个对象。如果我们再重新分配CAR 1:
car1 = new Car();
car1.setColor("Green");
car1.setPrice(0);
CAR 1将有绿色的颜色和0的代价,但CAR2还是会有蓝色的颜色和3000的价格,因为它仍然引用创建原始对象为car1。
很好的解释! – Sweeper
你想要什么?你通过创建一个新的参考变量意味着什么?你想从旧对象获取数据吗?你想让它们指向相同的实际对象吗? – SOFe