我正在创建Box类的对象(bb)并将25存储到其属性值。该对象将被创建,它将有内存。现在我想创建Box类的新实例,但我希望它将它指向为bb创建的同一个对象,而不是再次为它分配新内存。例如,如果写入盒子cc新框();并打印出cc.value它应该打印25.它不应该分配新的内存。那就是每次我们创建对象时都应该引用bb。例如Box newOne = new Box();和newone.value应该给我们25.这可能吗?我不知道我是否已经很好地描述了这个问题。我最近在考试中遇到过这类问题。
Box bb = new Box();
bb.value = 25;
Box cc = new Box();//It should not allocate new memory it should refer to
//the previous memory that we used for bb.
System.out.println(cc.value);//It should give us 25
class Box{
int value;
}
答案 0 :(得分:2)
这应该回答你的问题:
Box box = new box(25);
Box box2 = box;
由于box2不是新对象,因此它将引用为在内存中创建的第一个对象。
答案 1 :(得分:1)
现在我想创建Box类的新实例,但我不想这样做 为它分配新的内存,我想实例化同一个对象 为bb创建
没有意义。
实例化一个新对象,并在内存或中分配一个新对象,通过将同一个对象分配给多个变量来重用同一个对象。
1)如果要创建不超过1个Box
的实例,可以使用单例模式。
public class Box{
private Box box = new Box();
public int value;
private Box(){
}
public static Box of(){
return box;
}
}
以这种方式使用它:
Box bb = Box.of();
bb.value = 25;
Box cc = Box.of();
System.out.println(cc.value);
2)如果您希望在value
的所有实例之间共享一个Box
字段,请将此字段设为static
:
public class Box{
public static int value;
...
}
以这种方式使用它:
Box bb = new Box();
bb.value = 25;
Box cc = new Box();
System.out.println(cc.value);
它不会避免创建Box
的多个实例,但会为int value
字段分配一个分配。