关于JAVA变量定义的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:51:52
以下哪个表达式是不合法的( )
"A、String x=”Hello”; int y=9; x+=y;;

B、String x=”Hello”; int y=9; if(x= =y) { };

C、String x=”Hello”; int y=9; x=x+y;;

D、String x=null; int y=(x!=null)&&(x.length()>0) ? x.length : 0

A为什么正确,而B为什么不正确呢?
D为什么也正确呢?

A正确,因为在JAVA中,两者进行相加的操作(A+B),如果有一者(A或B)是字符串,则另者(B或A)将作为字符串与前者进行连接运算,所以A是对的!
B是错误的,因为在JAVA中String类型的数据是引用类型,int是值类型,两者不能进行==运算,所以B是错误的!

D正确,是因为在选择运算中,X!=null决定了y=0,于是不会执行x.length(),
当然可能是手误,D答案的正确格式应该是
String x=null; int y=(x!=null)&&(x.length()>0) ? x.length() : 0 ;
括号忘了!

定义语句里面只能有定义语句和赋值语句
B不对是因为if(x==y){};是一句“选择结构”语句
D对因为int y=(x!=null)&&(x.length()>0) ? x.length : 0是一个三目运算符,功能等同于赋值语句。

A正确,是因为x是字符串,当用自加运算符时,回自动把int型的y编程字符串再连接,也就是说x+=y中的+号是字符串连接符。
B错误,是因为这里是用x==y来判断两个变量的想到与否,因为数据类型不一样,当然错了。
D正确,是应为这是一个给y赋值的语句,用了一个条件表达式,如果x不为空并且x.length()>0就给y赋值为字符串x的长度,否则就给y赋值0.