java表达式类型转换

今天无意中看到我之前做的一个关于java面试题的小测试 ,发现今天还是不懂。如下面的代码:

	private static void out(){	
		char x='x';
		int i=10;
		System.out.println(false?i:x);
		System.out.println(false?10:x);
	}

 

上面打印的结果是:

120
x

第一条打印结果应该是可以理解的,char类型像int类型转化了,但是第二条语句就不能理解了,当时有很多错误的猜测。

结果我的一很牛叉的同事很好的解释了这个问题。就是如果在这个三目表达式中,如果其中一个类型为常量,则按照变量的类型进行转换,前提是这个常量能被变量的类型表示。下面这个链接的15.25很好的解释了上面的问题。

http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#290293

 

什么叫常量能被变量的类型表示呢?

10肯定是可以被char类型表示的

byte short int long都是带符号的整数,而char是无符号的。如 -10就不能被char类型表示。

如:System.out.println(false?-10:x);  这句话打印出来的结果就是x。所以一切问题就迎刃而解啦~~

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值