Java 在 declaration/init 中使用双除法时的奇怪行为

Java strange behaviour when using double division in declaration/init

我已经测试了这两个代码:

1)

double b = 1 / 2;

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    System.out.println(b);
}

结果:0.0

2)

double b = 0.5;

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    System.out.println(b);
}

结果:0.5

为什么会这样?

因为 double b = 1 / 2; 首先计算 1 / 2,这是简单的整数除法,计算结果为 0,然后将该值转换为双精度 0.0 以将其分配给 b.