Java中 = 和 += 的区别
来源:互联网 发布:迷你笔记本电脑知乎 编辑:程序博客网 时间:2024/06/03 08:00
问题
1) short s1 = 1; s1 = s1+1;有什么错?
2) short s1 = 1; s1 += 1;有错吗?
讨论
1)+:在编译器将右边的表达式结果计算出来后,和左边的变量类型比较精度,如果左边的变量精度低于右边的结果的精度,编译器会显式的报错,告诉程序员去强制转型。(所以s1 = s1 + 1出错)最后将表达式的结果复制到变量所在的内存区。
2)+=:编译器自动隐式直接将+=运算符后面的操作数强制装换为前面变量的类型,然后在变量所在的内存区上直接根据右边的操作数修改左边变量内存存储的二进制数值(所以 s += 1不报错)最后达到和赋值运算符相同的目的。与前者相比,由于后者是位操作,效率也较前者高。
public class TestEqualOperater {/** * += 会把后面的数值自动强制转换为前面的类型,然后在那快内存上直接修改数值; * = 是会在把后面的数值赋值到前面的变量时检测类型是否相同( 非自动强制转换!)如果是高精度到低精度的,需要报错,告诉程序员会loss of data */public static void main(String[] args) {short s = 0;int i = 32768;//1000 0000 0000 0000 //int j = 32767;// 111 1111 1111 1111 //System.out.println(Integer.toBinaryString(ii));s += i;//s = s + i;System.out.println((short)32768);System.out.println(s);}}
阅读全文
0 0
- java中“+”和“+=”的的区别
- Java中 = 和 += 的区别
- java中+=和=的区别
- Java中 = 和 += 的区别
- Java语法----Java中equals和==的区别
- Java语法----Java中equals和==的区别
- Java语法----Java中equals和==的区别
- Java语法----Java中equals和==的区别
- Java 中 equals 和 == 的区别和联系
- Java中==和equals的区别和联系
- java中字符串的equals和==的区别
- java中两个字符串“Equals”和“==”的区别
- java中两个字符串“Equals”和“==”的区别
- java中两个字符串“Equals”和“==”的区别
- Java中"equals"和"=="的区别
- Java中"equals"和"=="的区别
- JAVA中==和equals的区别
- 实例讲解java中==和equals的区别
- windows系统安装composer,解决安装magento问题
- Android开发之银联工作密钥,主密钥,传输密钥(加解密图文展示)
- 获取运行文件路径 ,TCHAR 转 CString
- linux 解压war包
- oracle 分组后取每组第一条数据
- Java中 = 和 += 的区别
- Android kotlin入门与基础语法一
- 导入开源库后,出现java.lang.NoClassDefFoundError: rx.plugins.RxJavaPlugins异常
- linux 文件类型
- 单利模式-懒汉式-饿汉式
- 阿里云主机安装oracle11g 交换空间不足
- Java基础
- Android 自定义相机 身份证拍照 自定义身份证相机
- 自动跳转文本的实现