引言
- 在记录自己自学java过程中,首先声明关于学习顺序可能并不很科学,即使我也是通过一些公开的资料来进行学习,但不会是完全无基础的教学,更像是比对着python(本人平时编程使用的是python)比较实现方法的异同学习,请酌情参考学习,有理解不对的地方欢迎指正。
java基础 - 3
java的整数运算
- 在java中整数的数值表示不但是精确的,而且整数运算永远是精确的,即使是除法也是精确的,因为两个整数相除只能得到结果的整数部分:
int x = 12345 / 67; // 184, 有点像python中的地板除
- 如果想获得余数需要使用%
int y = 12345 % 67; // 17
- 但是在java中整数的除法对于除数为0时运行时将报错,但编译不会报错,python如果除数是0会直接提示除数为零错误
- 整数由于存在范围限制,如果计算结果超出了范围,就会产生溢出,而溢出不会出错,却会得到一个奇怪的结果:
public class Main {
public static void main(String[] args) {
int x = 2147483640;
int y = 15;
int sum = x + y;
System.out.println(sum);
}
}
- 这里就需要补充上一个文章没有写到的范围限制问题(各个整数能表示的最大范围)
- byte:-128 ~ 127
- short: -32768 ~ 32767
- int: -2147483648 ~ 2147483647
- long: -9223372036854775808 ~ 9223372036854775807
- 知道了限制范围,那么我们看一下将上面的x和y都换算成2进制的写法

- 显然,如果我们把int类型换成long,就不会导致范围溢出,也就不会出现负数结果
long x = 2147483640
long y = 20
long sum = x + y
System.out.println(sum)
- 此处纠正java中也有简写的运算符,即+=,-=,*=,/=,与python中用法一致
自增/自减
- Java还提供了++运算和--运算,它们可以对一个整数进行加1和减1的操作:(python中没有该用法)
public class Main {
public static void main(String[] args) {
int n = 100;
n++;
n--;
System.out.println(n);
}
}
- 注意:++写在前面和后面计算结果是不同的,++n表示先加1再引用n,n++表示先引用n再加1,结果可是不同的,务必注意
- 为了避免混淆,尽量不要将该用法写到计算公式中,容易迷