Java中的扩展运算符盲区

原创 2015年07月09日 20:31:49

首先看一段代码:

public static void main(String[] args) {
    byte num = 1;
    num = num + 1;
    num += 1;
    System.out.println(num);
}

我们一般都认为 num = num + 1 和 num += 1 这两条语句是等价的,后者是前者的简写。
对于加法操作, num + 1 的结果是int类型的,因此num = num + 1这句话在编译过程中,编译器会提示错误“type mismatch: cannot convert from int to byte”。同理,对于num += 1,编译器也应该提示相同的错误。

但是在实际编译时,发现只有第一个运算会报错,而num+=1可以通过编译,说明 += 运算符不仅仅等同于 num = num + 1,而应该等价于
num = (num的数据类型)(num + 1)。

在 += 运算符中,实际隐含了一个强制类型转换的操作。

版权声明:本文为博主原创文章,随便转载!注明出处即可!

相关文章推荐

【Java基础知识】扩展的赋值运算符隐含着强转

示例代码一:     short s = 1;     s = s + 1; 以上代码无法编译:提示错误 Type mismatch: cannot convert from int to sh...

3-Java运算符、表达式

  • 2016年04月30日 17:55
  • 19.51MB
  • 下载

Java运算符优先级

  • 2015年08月11日 11:26
  • 14KB
  • 下载

基于Arduino超声波测距/盲区检测

Arduino源代码: const int echopin = 3; // echo接3端口 const int trigpin = 2; // trig接2端口 const int led =...
  • wybliw
  • wybliw
  • 2017年05月16日 11:00
  • 436

java位运算符

  • 2015年12月20日 22:03
  • 2KB
  • 下载

厌恶性盲区

这世界上还有很多伟大的创业想法未被发掘出来,就在我们鼻子底下。我们之所以不能发现它们,其中一个原因就是我把它称作schlep blindness的现象。Schlep这个词最初来自一种犹太语,传入美...

Java运算符

  • 2012年07月21日 11:31
  • 27KB
  • 下载

网络安全的误区和盲区:系统修补

内容来自趋势科技CTO Raimund Genes的视频博客Stuxnet攻击引发了对零日(zero-day)弱点漏洞的关注。它震撼了IT安全管理人的信心,迫使安全专业人员做出解决方案。不过就如同趋势...
  • iqushi
  • iqushi
  • 2011年01月12日 09:24
  • 600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中的扩展运算符盲区
举报原因:
原因补充:

(最多只允许输入30个字)