为什么Java的部门被打破了?

Den*_*ink 0 java division

我是一位经验丰富的php开发人员,刚刚开始学习Java.我现在正在学习一些Lynda课程,而且我还处于早期阶段.我正在编写示例程序,要求用户输入并进行简单的计算和处理.

昨天我遇到了这种情况:

double result = 1 / 2;
Run Code Online (Sandbox Code Playgroud)

有了我的穴居人脑,我会想result == 0.5,但不,不是用Java.显然1 / 2 == 0.0.是的,我知道如果我将其中一个操作数更改为double,结果也将是double.

这实在让我感到害怕.我不禁想到这是非常破碎的.认为整数除法产生整数是非常天真的.我认为这种情况很少发生.

但是,由于Java被广泛使用并且正在搜索"为什么java的部门被破坏?" 不会产生任何结果,我可能错了.

我的问题是:

  1. 为什么除法表现得像这样?
  2. 我还能在哪里找到这样的魔法/伏都教/意外行为?

Jea*_*nès 5

Java是一种强类型语言,因此您应该了解表达式中值的类型.如果不...

1int(as 2),1/21和2的整数除法也是如此,因此结果0为a int.然后结果转换为相应的double值,所以0.0.

整数除法与浮点除法不同,如数学(自然数除法不同于实数除法).