Java 之复合赋值运算符
1.引入问题
切入正题,看下面代码,结果应该是怎么样的
public class App{
public static void main( String[] args ){
byte a=1 ;
int b = 10;
a= a+b;
System.out.println(a);
a+=b;
System.out.println(a);
}
}
这段代码的执行结果是什么??
2. 执行结果
。。。。。。。。。。。。。。。。。。。答案如下。。。。。。。。。。。。。。
上面的代码的编译的时候会报错,编译失败。因为在函数内部第三行中,左边的a是byte类型,右边的a是byte类型 b是int类型,当a和b相加的时候就会进行类型提升。导致a+b的结果是int,把一个int型的值赋值给一个byte类型的时候自然会报错。但是a+=b;这行代码却是可以正常执行的,这是为什么呢?
3. 结果分析
关于第三行报错的原因上面已经说过了,但是a+=b;能够正常执行的原因是什么呢?根据JLS(Java语言规范)指出,复合赋值运算符表达式 E1 op= E2 等价于 E1 = (T)((E1) op (E2)) 其中T是E1的类型,但E1只会被求值一次。也就是说上面a+b的执行过程是这样的,a = (byte)(a+b);在赋值的时候发生了强制转换,所以是可以正常编译通过的。这样就解释了上面编译的结果了。
Java 之复合赋值运算符的更多相关文章
- Java中复合赋值运算符自动进行强制类型转换
public class Operation { public static void main(String[] args) { int num1 = 10; num1 = num1 / 2.2; ...
- 021 01 Android 零基础入门 01 Java基础语法 03 Java运算符 01 赋值运算符
021 01 Android 零基础入门 01 Java基础语法 03 Java运算符 01 赋值运算符 本文知识点:Java中的赋值运算符 赋值运算符 赋值运算符从右往左运算 赋值运算符左边不能是常 ...
- IT兄弟连 Java语法教程 赋值运算符
从本书之前的内容中就一直在使用赋值运算符.现在是正式介绍赋值运算符的时候了.赋值运算符是单个等号”=“.在Java中,赋值运算符的工作方式与所有其它计算机语言相同.它的一般形式如下: var = ex ...
- 慕课网-安卓工程师初养成-3-3 Java中的赋值运算符
来源:http://www.imooc.com/code/1298 赋值运算符是指为变量或常量指定数值的符号.如可以使用 “=” 将右边的表达式结果赋给左边的操作数. Java 支持的常用赋值运算符, ...
- Java中的赋值运算符
赋值运算符是指为变量或常量指定数值的符号.如可以使用 “=” 将右边的表达式结果赋给左边的操作数. Java 支持的常用赋值运算符,如下表所示: public class HelloWorld{ pu ...
- java设计模式----复合模式
复合模式:复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的一般性问题 要点: 1.MVC是复合模式,结合了观察者模式.策略模式和组合模式 2.模型使用观察者模式,以便观察者更新,同时保持 ...
- JAVA赋值运算符
赋值预算符,简单来说就是把以及定义了值的变量值赋值给刚定义的变量 例如,a学员,与b学员的成绩相同,a学员是80分,我们根据a学员的成绩,输出b学员的成绩. public class Test{ pu ...
- Java基础进阶整理
Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基 ...
- Java笔试面试题二(常考问答)转
1.说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允 ...
随机推荐
- Android Studio 快捷键整理分享
Alt+回车 导入包,自己主动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成 ...
- win2008服务器部署系统前需要做的一些工作
一.打开.net framework及IIS管理器 win2008系统自带是有.net framework3.5的,但是默认该功能是没有开启的,需要手动开启(和win7一样).点击控制面板->程 ...
- 【Linux&Unix--文件描述叙事的性格和权柄】
个人学习整理,如有不足之处,请不吝不吝赐教.转载请注明:@CSU-Max 系列博文: Linux&Unix学习第一弹 -- 文件描写叙述符与权限 L ...
- ASP.Net中使用XMLDataSource
在Web开发中,程序和数据库打交道是常有的事情.在平时使用过程中,使用较多的是MS SQLSERVER,因此经常用到SQLDataSource将数据绑定的数据控件上.有时数据量较小,无需要在数据库中创 ...
- ASP.NET MVC 3: Razor中的@:和语法
原文 ASP.NET MVC 3: Razor中的@:和语法 [原文发表地址] ASP.NET MVC 3: Razor’s @: and <text> syntax[原文发表时间] De ...
- python 基础知识点整理 和详细应用
Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...
- hdu 4919 Exclusive or
Exclusive or Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) T ...
- Android开发之自己主动登录功能的实现
在我们平时使用的手机应用都能够实现仅仅须要登陆一次账号后,第二次进入应用直接跳转到效果界面的效果,还有QQ的登陆框是怎样记忆我们的隐身登陆,保存账号选项的呢,这些都是通过使用SharedPrefere ...
- docker study
Author:Hyphen 同步公布在个人博客中:http://yanheven.github.io/docker-study/ 參考章宇兄的开源项目学习ABC的方法来对docker进行简单的学习与分 ...
- win7或windows server 2008 R2 被远程登录日志记录 系统日志
事件查看器 → Windows 日志 → 安全 (win7 事件查看器 打开方式 :计算机 右键 → 管理 → 计算机管理 → 系统工具 → 事件查看器 windows server 2008 ...