在Java中,下列语句不能通过编译的有( )
A、String s= “join”+ 3;
B、int i= “a”+3;
C、short a = ‘a’+5;
D、float f = 5+5.5;
A没问题,字符串和其他任意基本数据类型连接,结果都是字符串
B通不过,不能把String赋给int
C没问题,char转成int,再加常量优化(判断取值范围),结果在short内就赋过去
D为什么通不过?难道不是int转成double,再加常量优化,结果在float范围内就赋过去么?
- public class Exec15 {
- public static void main(String[] args) {
- String s = "join" + 3;
- System.out.println(s); //输出"join3"
- //int i = "a" + 3; //String不能赋给int
- //System.out.println(i);
- short a = 'a' + 5; //char转换成int再加常量优化(判断取值范围)
- System.out.println(a);
- float f = 5 + 5.5; //这是为啥?int转换成double,但还是常量啊,为什么常量优化没起作用,直接报错了?
- System.out.println(f);
- }
- }
复制代码 |
|