自学Java7

76 阅读2分钟

引言

  • 在记录自己自学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); // -2147483641
    }
}
  • 这里就需要补充上一个文章没有写到的范围限制问题(各个整数能表示的最大范围)
    • 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); // 2147483660
  • 此处纠正java中也有简写的运算符,即+=,-=,*=,/=,与python中用法一致

自增/自减

  • Java还提供了++运算和--运算,它们可以对一个整数进行加1和减1的操作:(python中没有该用法)
public class Main {
    public static void main(String[] args) {
        int n = 100;
        n++; // 101, 相当于 n = n + 1;
        n--; // 100, 相当于 n = n - 1;
        System.out.println(n);
    }
}
  • 注意:++写在前面和后面计算结果是不同的,++n表示先加1再引用n,n++表示先引用n再加1,结果可是不同的,务必注意
  • 为了避免混淆,尽量不要将该用法写到计算公式中,容易迷