表达式转型注意事项
来源:互联网 发布:ios10 连接网络 编辑:程序博客网 时间:2024/06/03 17:24
转载自:
http://www.cnblogs.com/bokeofzp/p/4745681.html
1.java中表达式转型需要注意
实例如下:
byte b1=1,b2=2,b3,b6;final byte b4=4,b5=6;b6=b4+b5;b3=(b1+b2);System.out.println(b3+b6);
问会出现什么状况:
A、输出结果:13,
B、b6=b4+b5 编译出错
C、b3=b1+b2编译出错
D、运行异常
首先表达式转型注意以下规则:
①所有的byte,short,char型的值将被提升为int型;
②如果有一个操作数是long型,计算结果是long型;
③如果有一个操作数是float型,计算结果是float型;
④如果有一个操作数是double型,计算结果是double型;
首先2个byte类型相加,会自动提升为int,计算的结果也是int因此需要强制转化会byte,而被fianl修饰的变量不会改变,会被JVM优化,当2个final修饰相加时候会根据左边变量的类型而转化,作为这2个final变量的最终类型。
如下面的代码:
编译运行都是通过的,final int和final byte相加是整形和byte型都可以,不需要强制转换。
public static void main(String[] args) { final int a=2; final byte a2=3; int a3=a+a2; byte a4=a+a2; System.out.println(a4); }
必须指出,表达式的类型将严格保持和表达式中最高等级操作数相同的类型。
如果表达式中包含了字符串,则又是另一番情形了。看如下代码:
public static void main(String[] args) { System.out,println("Hello!"+ 'a' + 7); System.out,println('a' + 7 + "Hello!"); }
输出结果:Hello!a7104Hello!
对于第一个表达式““Hello!”+ ‘a’ + 7”,先进行“Hello!” + ‘a’运算,把’a’转换为字符串,拼接成字符串Hello!a,接着进行”Hello!a” + 7运算,这也是一个字符串连接运算,得到结果Hello!a7;
对于第二个表达式先进行‘a ’+ 7运算,‘a’自动提升到int类型, 变成a对应的ASCII值:97,从“97+ 7”将得到104,然后进行“104”+ “Hello!”运算,104会自动转换为字符串类型,将变成两个字符串的连接运算,从而得到104Hello!
- 表达式转型注意事项
- 表达式转型注意事项,和final修饰的变量会被JVM优化
- 表达式转型注意事项,和 final修饰的变量会被JVM优化
- 表达式转型注意事项,和final修饰的变量会被JVM优化
- java表达式转型规则
- Java表达式转型规则
- JAVA表达式的转型规则
- Java表达式计算转型规则
- JAVA表达式的转型规则
- 正则表达式使用注意事项
- EL表达式注意事项
- 正则表达式注意事项
- (正则表达式)注意事项
- ognl表达式注意事项
- java正则表达式注意事项
- Lambda表达式注意事项
- 转型
- 转型
- 5.MFC实现简单的COM
- android有序广播和无序广播的区别
- Android自定义权限与使用
- RxJava 和 RxAndroid 生命周期控制和内存优化
- linux使用小技巧
- 表达式转型注意事项
- jzoj 1589. 【普及模拟】洗牌
- eclipse构建maven web项目
- hive与HBase整合
- 排序算法之 —— 希尔排序(四)
- Linux蓝牙系统(3) Linux 命令
- windows程序设计学习笔记-图元文件
- HDFS append: Failed to close file /sys/global/log/sys_20160716.log. Lease recovery is in prog
- 十分推荐的一篇关于CSS浮动的博文