一道笔试题引发的搜索

 昨日有一道有很基础的笔试题,本想昨天开通人人第一时间发布的,由于搞到半夜才弄的人人账号,惰性再次战胜了我(虽然已经被战胜无数次了= =!)果断直接睡觉了.....

      先说下题:JAVA语言,一个char加上一个int是什么类型?比如  'a'+1  是什么类型的?我果断选择了char,上网搜索后发现悲剧了,是int类型。另外还发现了个有趣的东西,大家猜猜下面的都是什么类型的吧!(代码和解释摘自网上....)

public class TestChar{
public static void main(String[] args){
int i=5;
char c='d';
c=c+(char)i
c='d'+(char)i;
c+=(char)i;
c='d'+11;
c=c+11;
c+=11;
c=c+'d';
c+='d';
System.out.println(c);
}
}

结论很有意思,先说下为什么  'a'+1  是int类型。“

java中两个低级相互运算,其结果为能包含它的最小primitive

”也就是说,我们可以将它理解为最小且能够包含相加后的类型,比如说,一个char加上一个int有可能超过char的范围,因此要取其大者---即int,不知道我的这种理解是否正确。因为一个非常有意思的事实是,'a'+'b'的结果也是int类型。按照这个思想以及java的语言特性,上面程序的结果如下:

public class TestChar{ public static void main(String[] args){
 int i=5
char c='d';
c
=c+(char)i;//编译不通过 [color=#FF0000]//java中两个低级相互运算,其结果为能包含它的最小primitive,这里是结果是int[/color]
c='d'+(char)i;//编译通过
c+=(char)i;//编译通过 [color=#FF0000]//这里+=运算会进行自动转化的[/color]
c='d'+11//编译通过 
c=c+11;//编译不通过[color=#FF0000]这里11默认的类型为int,char+int结果当然应该是int[/color] c+=11;//编译通过 [color=#FF0000]//+=运算自动转化[/color]
c=c+'d';//编译不通过 [color=#FF0000]//java中两个低级相互运算,其结果为能包含它的最小primitive,这里是结果是int[/color]
c+='d';//编译通过 [color=#FF0000]//+=运算自动转化[/color]
System.out.println(c); 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值