您的位置:首页 > 编程语言 > Java开发

Java 条件表达式结果类型不一致问题

2015-09-08 17:05 337 查看
确定条件表达式结果类型的规则过于冗长和复杂,很难完全记住它们,但是其核

心就是一下三点:

• 如果第二个和第三个操作数具有相同的类型, 那么它就是条件表达式的类

型。换句话说,你可以通过绕过混合类型的计算来避免大麻烦。

• 如果一个操作数的类型是 T,T 表示 byte、short 或 char,而另一个操作

数是一个 int 类型的常量表达式,它的值是可以用类型 T 表示的,那么条

件表达式的类型就是 T。

• 否则,将对操作数类型运用二进制数字提升,而条件表达式的类型就是第

二个和第三个操作数被提升之后的类型。

public class DosEquis{
public static void main(String[] args){
char x = 'X';
int i = 0;
System.out.println(true ? x : 0);
System.out.println(false ? i : x);
}
}


第一个 print 语句打印的是X,而第二个打印的却是 88

在程序的两个条件表达式中,一个操作数的类型是

char,另一个的类型是 int。在两个表达式中,int 操作数都是 0,它可以被表

示成一个 char。然而,只有第一个表达式中的 int 操作数是常量(0),而第二

个表达式中的 int 操作数是变量(i)。因此,第 2 点被应用到了第一个表达式

上,它返回的类型是 char,而第 3 点被应用到了第二个表达式上,其返回的类

型是对 int 和 char 运用了二进制数字提升之后的类型,即 int。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: