条件表达式 JAVA

System.out.println(false ? 1.0 : 1);
输出: 1.0 不应该输出成: 1
System.out.println( false ? 1 : 'a');
输出: a
System.out.println( false ? 1.0 : 'a');
输出: 97什么表达中1变成1.0,就会输出'a'呢?System.out.println( true ? 98 : 'a');输出: b同上System.out.println( true ? 98.0 : 'a');输出:98.0同上
以上如何解释?

JAVA条件表达式,有几点注意一下就可以。。

1、如果冒号两边,是同一种类型,那么该条件表达式的值也是同一种类型。。

2、如果其中一边的类型是byte、short或者char(暂且统称为X类型),而且另外一边是int常量(注意是常量),而且这个常量可以用X类型表示(也就是不溢出),那么,结果就是X类型。。
比如:
System.out.println( true ? 98 : 'a');输出: b

3、如果不符合上述情况的,则自动隐式转换,即小范围的转换成大范围的,低精度的转换成高精度的类型,最后的结果就是转换后的类型。。
比如:
System.out.println( false ? 1.0 : 'a');
输出: 97 //这里其实应该是97.0,double类型。。
本人亲自检验了下,确实应该是97.0

就是这样吧。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-30
是这样的 , 这种写法的逻辑是这样的 xxx? yy:zz;
xxx 是一个真假的表达式 , 如果为真 , 就返回 yy 如果为假 就返回 zz
比如 System.out.println( 1>2 ? "1不大于2" : "1小于2" ); 因为 1>2 这个逻辑是否定的 , 所以会输出 冒号后边的部分
第2个回答  2013-10-30
其实这里受到自动类型转换的影响第一个输出1.0是因为,冒号前的是double类型,而后面的是int类型,所以后面的int会变为double类型输出,所以输出1.0,改为System.out.println(false ? 2.0 : 1);会输出1.0.,而不是2.0。 第二个,这个如果改为System.out.println( true ? 1 : 'a');,则会输出一个笑脸符号,这说明在这里会自动换为char类型。(其实我认为这个'a'会被转换为int类型,但结果不是,我也不大明白)ASCII码中a的值为97 其他也是差不多,大概转换规律是double : int --- > double int : char ----> chardouble:char --->double

java三元表达式怎么算?
Java三元表达式是通过条件表达式进行计算,其格式为:条件 ? 表达式1 : 表达式2。详细解释如下:三元表达式概述 Java中的三元表达式是一种简洁的条件表达式,它允许在代码中使用一个表达式来判断条件,并根据条件的结果选择不同的值或执行不同的操作。这种表达式常用于简化if-else语句,使代码更加简洁。三元...

java三元运算符是什么?
java三元运算符三元运算符是软件编程中的一个固定格式,语法是“条件表达式?表达式1:表达式2”。使用这个算法可以使调用数据时逐级筛选。语法为:条件表达式?表达式1:表达式2。Java提供一个特别的三元运算符(ternary)经常用于取代某个类型的if-then-else语句。这个运算符就是?,并且它在Java中的用法和...

Java三目运算符
Java 三目运算符是一种简洁的条件表达式,其格式为:条件 ? 结果1 : 结果2。结果的返回取决于条件的真假,若条件为真则返回结果1,反之返回结果2。例如以下代码片段:int a = 2;int b = 3;int c = (a > b) ? a : b;在这里,a 和 b 分别赋值为 2 和 3。三目运算符判断 a 是否大...

whileJava语言
在Java编程中,两种常用的循环结构是while循环和do-while循环,它们的语法结构如下:while(条件表达式) {循环体语句;} do {循环体语句;} while(条件表达式);关键的区别在于,do-while循环有一个显著特性,那就是它至少会执行一次,无论初始条件是否满足。也就是说,循环体内的语句至少会被执行一次,然...

什么是Java三元运算符?基本用法有哪些?
Java中的三元运算符是一种简洁的条件表达式,它的基本用法可以看作是同时操作三个表达式的逻辑工具。其语法形式为:通过这个结构,当提供的条件为真时,运算符会执行表达式1并返回其结果;反之,若条件为假,则执行表达式2。这与传统的if...else语句功能类似,但能有效地压缩代码,提高效率。以求两个数...

Java中? : 的含义及用法
三元运算符,又称问号和冒号运算符,是Java语言中一种特殊的条件判断表达式。其基本语法格式为:`条件 ? 表达式1 : 表达式2`,其功能相当于一个简化的if-else语句。当条件为真时,整个表达式的结果为`表达式1`的结果;当条件为假时,结果为`表达式2`的结果。例如:n == 1 ? "n的值等于1" : ...

java 三元表达式
Java三元运算符,又称为三元表达式,是一种简洁高效的条件判断方式,它将 if-else 语句进行了精简。使用格式为 `条件 ? 表达式1 : 表达式2`。如果条件为真,则返回表达式1的结果;如果条件为假,则返回表达式2的结果。例如,`a ? x : y` 表示如果 `a` 为真,则返回 `x`;如果 `a` 为假,...

java三元表达式怎么写
在Java中,三元表达式也称为条件运算符(Conditional Operator),可以根据一个条件的真假来选择两个不同的值。其表达式可以这样写:复制代码variable=(condition)?value1:value2;其中:condition是一个布尔表达式,即一个返回true或false的条件。value1是当条件为真时,赋给变量的值。value2是当条件为...

java三目运算符
Java三目运算符是一种简洁的条件表达式,用于根据某个布尔表达式的真假来返回两个值中的一个。它的格式是 `条件表达式 ? 表达式1 : 表达式2`。二、三目运算符的工作原理。1. 首先,评估“条件表达式”。2. 如果条件表达式的结果为true,则执行“表达式1”并返回其结果。3. ...

java中的boolean类型在if条件表达式中的应用
false的意思是跳过if下面的括号内容 只有if(true) 才会执行到后面括号里的代码

相似回答