黑马程序员技术交流社区
标题:
好新鲜的情况。我觉得哈
[打印本页]
作者:
黑马-张洋
时间:
2013-2-26 15:08
标题:
好新鲜的情况。我觉得哈
public class test {
public static void main(String args[]) {
int x = 4;
String str="qqq";
char ch='x';
System.out.println("1:value is " +((x>4)?99.9:9));
System.out.println("2:value is " +((x>4)?99:9));
System.out.println("3:value is " +((x>4)?"xyz":9));
System.out.println("4:value is " +((x>4)?9.999999999999999:9));
System.out.println("5:value is " +((x>4)?str:9));
System.out.println(ch);
System.out.println("6:value is " +((x>4)?ch:9));
System.out.println("--------------------");
}
}
复制代码
打印结果:
1:value is 9.0
2:value is 9
3:value is 9
4:value is 9.0
5:value is 9
x
6:value is
--------------------
第一:我本来我以为系统自己去取:后面的那个数就完了。结果还要根据第一个数的情况转变。为什么?像例子1,不转不行吗?转了岂不是不和我们预定的一样了?
第二:6:value is那里为什么打不出来9
作者:
黑马刘杰
时间:
2013-2-26 15:22
本帖最后由 黑马刘杰 于 2013-2-26 15:28 编辑
//这里涉及到类型转换问题了,ch:9以运算符左边为准
System.out.println(ch);
//ch是char类型,这里系统将9认为9也是char类型的,即ASCII码
System.out.println("6:value is " +((x>4)?ch:9));//9在ASCII码表中时TAB,这里输出了TAB
System.out.println("--------------------");
复制代码
作者:
陈圳
时间:
2013-2-26 15:38
package Day16;
public class Test2 {
public static void main(String args[]) {
int x = 4;
String str="qqq";
char ch='x';
System.out.println("1:value is " +((x>4)?99.9:9)); //比较数为double型,被提升了.
System.out.println("2:value is " +((x>4)?99:9)); // 输出int型9
System.out.println("3:value is " +((x>4)?"xyz":9)); //输出字符串"9" 例:4+"";=="4";
System.out.println("4:value is " +((x>4)?9.999999999999999:9));//比较数为double型,被提升了.
System.out.println("5:value is " +((x>4)?str:9)); //同s.o.y()3
System.out.println(ch); //输出字符串"x";
System.out.println("6:value is " +((x>4)?ch:9));//你的原句:9被转换成字符数值输出
System.out.println((char)9); //9
System.out.println("--------------------");
}
}
/*
* 1:value is 9.0
2:value is 9
3:value is 9
4:value is 9.0
5:value is 9
x
6:value is 9
6:value is
--------------------
*/
复制代码
作者:
黑马-张洋
时间:
2013-2-26 15:38
黑马刘杰 发表于 2013-2-26 15:22
谢谢,果然,我换了换
System.out.println("6:value is " +((x>4)?ch:86));
就打印的是ASCII码对应的东西了
作者:
贾文泽
时间:
2013-2-26 15:42
6:value is //这后面其实是有东西的,是输出了一个制表符,看不到而已,就是那个tab键
对于你的第一个问题,是这个表达式(x>4)?99.9:9)返回值的数据类型,在JDK1.5之前,要求后两个表达式【99.9和9】的类型是一样的,比如都是int,或者都是char,
不过在JDK1.5之后,因为有自动装箱跟拆箱了,所以就对整个表达式返回值的类型做了改变,可以提升或者可以转化
1 char ch = 'a';
2 int num = 0 ;
3 boolean bool = true;
4 System.out.print( bool ? ch : 0); //这里不是 bool ? ch : num 那样会打印两个97
5 System.out.print( !bool ? num : ch);
1 如果表达式1和表达式2操作数具有相同的类型那么它就是条件表达式的类型。
2 如果一个表达式的类型是byte、short、char类型的而另外一个是int类型的常量表达式且它的值可以用类型byte、short、char三者之一表示的那么条件表达式的类型就是三者之一
3 否则将对操作数类型进行二进制数字提升而条件表达式的类型就是第二个和第三个操作数被提升之后的类型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2