在JAVA中,编译运行以下程序后,关于输出结果的说明正确的是 ( ):
public class Conditional {
public static void main(String args[]) {
int x = 4;
System.out.println("value is " + ((x>4) ? 99.9 : 9));
}
}输出结果为:value is 99.99
输出结果为:value is 9
输出结果为:value is 9.0
编译错误
?运算符的通用格式如下:
expression1 ? expression2 : expression3
其中,expression1是一个布尔表达式。如果expression1为真,那么expression2被求值;否则,expression3被求值。
整个?表达式的值就是被求值表达式(expression2或expression3)的值。expression2和expression3是除了void以外的任何类型的表达式,且它们的类型必须相同,如果类型不同,参考下面的规则:
1.若果两个操作数不可转换,则不做转换,返回值为Object类型。
2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换。int类型转换为long类型,long类型转换成float类型。
3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型为T,那么,若数字S在T的范围内,则转换为T类型;若S超过了T的范围,则T转换为S类型。
4.若两个操作数字都是直接数字。则返回值类型为范围较大者。
expression1 ? expression2 : expression3
其中,expression1是一个布尔表达式。如果expression1为真,那么expression2被求值;否则,expression3被求值。
整个?表达式的值就是被求值表达式(expression2或expression3)的值。expression2和expression3是除了void以外的任何类型的表达式,且它们的类型必须相同,如果类型不同,参考下面的规则:
1.若果两个操作数不可转换,则不做转换,返回值为Object类型。
2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换。int类型转换为long类型,long类型转换成float类型。
3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型为T,那么,若数字S在T的范围内,则转换为T类型;若S超过了T的范围,则T转换为S类型。
4.若两个操作数字都是直接数字。则返回值类型为范围较大者。