新参考变量每次我创建一个对象?

时间:2016-02-06 06:29:09

标签: java oop object

假设我有一个Car Class,我为这个Car Class创建了一个引用变量。

Car car = new Car() - 相当简单。

我通过调用car.setColor("Red"), and car.setPrice(2500).

来编辑该汽车的属性

现在,假设我要创建一个新的Car Object,我是否必须创建一个新的引用变量:Car car2= new Car();或者我可以简单地将原始引用变量用于新车吗?

4 个答案:

答案 0 :(得分:3)

简短回答:这取决于你。

答案很长:你可以使用任何一种方法。如果您创建新车,则您创建的上一辆车不会受到影响,因为不同的对象完全独立。我们说

Car car1 = new Car();
car1.setColor("Red");
car1.setPrice(2500);
Car car2 = new Car();
car2.setColor("Blue");
car2.setPrice(3000);

现在car1car2有不同的颜色和价格。如果您更改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的对象仍在内存中。但它无法访问。

答案 1 :(得分:2)

扩展了Sweeper的答案:

如果我们这样做:

Car car1 = new Car();
car1.setColor("Red");
car1.setPrice(2500);
Car car2 = car1;
car2.setColor("Blue");
car2.setPrice(3000);

然后car1和car2都会有蓝色和3000的价格,因为它们指向同一个物体。如果我们再重新分配car1:

car1 = new Car();
car1.setColor("Green");
car1.setPrice(0);

car1的颜色为绿色,价格为0,但car2的颜色仍为蓝色,价格为3000,因为它仍然引用为car1创建的原始对象。

答案 2 :(得分:0)

对象只是在Heap中创建的临时缓冲区。
无论何时创建新对象,堆中都会提供新的缓冲区(或空格)。

答案 3 :(得分:0)

您当然可以重用第一个car变量,这在某些情况下很常见(例如循环)。请记住,原始变量的引用将被替换,因此除非您在其他地方(例如在集合或另一个对象上的字段中)存储对该对象的引用,否则该对象将是垃圾集。