Java 基本数据类型转换问题
2017-10-18 18:07
357 查看
一、short 和 int
(1)short s1 = 1; s1 = s1 + 1; // 这行有错
应改为s1 = (short)s1 + 1;
(2)short s1 = 1; s1 += 1; //没有错
分析:Java规范有这样的规则
a.高位转低位需要强制转换
b.低位转高位自动转.
short s1 = 1; s1 = s1 + 1;中,1 是int 型 , s1 short型 通过 + 运算后 s1 自动转为 int 型 , 所以错,应强制类型转换!
后面一句没有错是因为Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),而
(s1 += 1)表达式使用的是复合赋值操作符,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。
如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。
备注:某公司的考试题碰到的,不知道是抄谁的了,若原作看到了可告知,立马改。
(1)short s1 = 1; s1 = s1 + 1; // 这行有错
应改为s1 = (short)s1 + 1;
(2)short s1 = 1; s1 += 1; //没有错
分析:Java规范有这样的规则
a.高位转低位需要强制转换
b.低位转高位自动转.
short s1 = 1; s1 = s1 + 1;中,1 是int 型 , s1 short型 通过 + 运算后 s1 自动转为 int 型 , 所以错,应强制类型转换!
后面一句没有错是因为Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),而
(s1 += 1)表达式使用的是复合赋值操作符,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。
如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。
备注:某公司的考试题碰到的,不知道是抄谁的了,若原作看到了可告知,立马改。
相关文章推荐
- Java 基本数据类型与其包装数据类型以及字符串(String)之间的转换问题
- 马士兵Java课堂笔记-2-基本数据类型转换问题
- java学习之旅10--基本数据类型自动转换_强制转型_类型提升问题
- java基本数据类型之间的转换问题
- [Java]nio( 4000 二)——转换数据(编码问题)和获取基本数据类型
- 关于JAVA中的基本数据类型的转换相关问题
- java 基本数据类型的转换相关问题
- Java中八种基本数据类型占用字节空间总结和数据类型之间的转换
- java基本数据类型转换
- java 基本数据类型之间的转换
- 关于java 基本数据类型之间的转换
- java String和基本数据类型的转换
- JAVA基本数据类型转换
- Java基本数据类型转换(转)
- JAVA基本数据类型转换
- 黑马程序员J_ava学习笔记_Java中的基本数据类型转换详解
- Java基本数据类型的转换
- Java中的移位操作以及基本数据类型转换成字节数组【收集】
- Java基本数据类型转换
- java基本数据类型转换