Java class 只有一个构造函数,构造函数没有参数,那个 class 的所有实例都会指向堆中的同一个对象?

Java class has only one constructor, no parameter for constructor, all instances of that class will point to the same object in the heap?

有以下情况:

 class Bond {
    private static int price = 5;
    public boolean sell() {
     if(price<10) {
       price++;
       return true;
     } else if(price>=10) {
       return false;
     }

     return false;
    }
    public static void main(String[] cash) {
     new Bond().sell();
     new Bond().sell();
     new Bond().sell();

     System.out.print(price);

     Bond bond1=new Bond();

     System.out.print(price);
    }
 }

它将打印:8 9。 将创建的所有实例都将指向堆中的同一个对象吗?

Java中有一个非常简单的规则:new SomethingOrOther()总是创建一个新对象(除非它以某种方式产生异常)。

所以答案显然是:不,您发布的 main 方法将创建 4 个 Bond.

实例

这些实例恰好没有任何使它们以任何有趣的方式不同的字段,但它们个不同的实例。

它“看起来”只存在一个实例的原因是您的 price 字段是 static,这意味着它属于 class Bond 本身而不是单个实例,这也意味着永远只有一个 price,无论你有多少个实例(是的,即使根本没有实例)。

去除“价格”的静态关键字自己回答。

静态变量在所有对象实例中保持相同的值。