1、首先创建一个java文件,通过记事本编写简单的demo代码,本人编写了一个Test文件,然后另存为.java文件。参考下图,
2、现在我们通过编译来比较b=b+10;和b+=10;的区别,第一步我们把b+=10;进行注释,参考下图。
3、然后在cmd命令行进行编译(环境配置时候classpath设置当前路径),通过编译我们可以发现b=b+10会报错误,原因是b是byte类型,而10是int类型,int类型不能隐式转换为byte。参考下面结果:
4、将第一步我们把b=b+10进行注释,然后进行编译,执行,我们会发现b+=10;是可以通过的。具体参考下图
5、那么,为什么byte b=1;b+=10;会编译通过呢,首先我们通过反编译工具查看编译后的class文件。具体如下:
6、通过对class文件的了解可以知道,这段代码byte b=1;b+=10;System.out.println(b);被编译成了int i = 1;i = (byte)(i + 10);System.out.println(i);现在我们可以很清楚的了解到为什么byte b=1;b+=10;b=b+10的区别,首先编译上,b+=10是可以编译通过的,编译后的文件也是做过处理的。有兴趣的可以测试下下面这个代码,你会更加了解byte和int的关系。