Java陷阱(一)
前言:摘自《Java解惑》。这些问题都很经典,可以细细品味。今天先整理一些之后陆续上传,分享分享,大家共勉。
问题:奇数性
代码:
/** * DosEquis * @authorLiangGzone */public class DosEquis { publicstatic void main(String[] args) { charx = 'X'; inti = 0; System.out.println(true?x:0); System.out.println(false?i:x); }}
分析: 如果第2个和第3个操作数具有相同的类型,那么它就是条件表达式的类型。如果一个操作数的类型是T,T表示byte、short、char,而另一个操作数是一个int类型的常量表达式,它的值可以用类型T表示。否则,将对操作数类型进行二进制数字提升,而条件表达式的类型就是第2个和第3个操作数被提升之后的类型。
建议:最好在表达式中使用类型相同的第2个和第3个操作数。
链接:
Java陷阱(二)