Java中关于数学运算

Java中关于数学运算应该注意的点

  1. Java中浮点数除以 0 产生的结果
public static void main(String[] args) {
    var i = 15.0;
    var x = i/0;
    System.out.println(getType(x));
    System.out.println(x);
}
private static String getType(Object o) {
    return o.getClass().getName();
}

输出结果

java.lang.Double
Infinity


  1. Java中 int 类型运算结果超出最大值
public static void main(String[] args) {
    var i = 1000000000;
    System.out.println(3 * i);
}

对于上面这个程序,控制台输出的结果是:-1294967296。结果显然是错误的

数学运算符只是悄悄地返回错误的结果而不做任何提醒。


Java中,当用一个运算符连接两个值时,先要将两个操作数转换为同一类型,然后再进行操作。
如果两个操作数中有一个是double类型,另一个操作数就会被转换为double类型
否则,如果其中一个是float类型,另一个操作数就会被转换为float类型
否则,如果其中一个是long类型,另一个操作数就会被转换为long类型
否则,两个操作数都会被转换为int类型。

要注意,两个byte类型的数相加,其结果是一个int类型,而不是一个byte类型。


  1. 强制类型转换通过截断小数部分将浮点值转换为整型。

  1. >><<分别表示右移运算符和左移运算符,>>>表示无符号右移运算符,

>>>会用0填充高位,这与>>不同,它会用符号位填充高位,不存在<<<操作符。

移位运算符的右操作数要完成模32运算(除非左运算数是long类型,这种情况下右操作数要模64)。例如:1<<35等同于1<<3


  1. 同一个级别的运算符按照从左向右的次序进行计算(右结合运算符除外)


参考资料:

[1] Cay S.Horstmann 著,林琪 苏钰涵等译.Java核心技术 卷1(原书第11版).北京:机械工业出版社,2020:37-44.

[2] 百度百科.移位运算符.https://baike.baidu.com/item/移位运算符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值