高分求教

YJALH12345 2009-06-10 05:33:52
public class Test{
public static void main(String[] args)
{
char x='Y';
int i=1;
System.out.print(true? x:i);
System.out.print(false ? i:x);
}
}
...全文
36 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
johnston678 2009-06-11
  • 打赏
  • 举报
回复
如果第二个和第三个操作数具有相同的类型,那么它就是条件表达式的类型。如果一个操作数的类型是T,T表示byte、short或char,而另一个操作数是一个int类型的常量表达式,它的值是可以用类型T表示的,那么条件表达式的类型就是T。否则,将对操作数类型运用二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类型。
johnston678 2009-06-11
  • 打赏
  • 举报
回复
LZ的代码是不是搞错了,应该是这个吧

/**
*
*/
package net.csdn.blog.johnston;

/**
* @author Administrator
*
*/
public class TestCSDN {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
char x='Y';
int i=1;
System.out.print(true? x:i);
System.out.print(false ? 1:x);

}

}


运行结果是:
89Y

awusoft 2009-06-11
  • 打赏
  • 举报
回复

public class Test{
public static void main(String[] args)
{
char x='Y';
int i=1;
System.out.print(true? x:i);
System.out.print(false ? i:x);//是不是应该是x:i啊??
}
}



不知道楼主是不是代码写错了呢?x:i的位置怎么也换了呢?那两次都是输出'Y'的int值嘛
breezes2008 2009-06-10
  • 打赏
  • 举报
回复
条件(三目)运算符 (?:) 会自动向上转型。
此例中char-->int型。
所以输出结果为:89 89
记得在哪个网站上看到类似的题目,说得是:
System.out.println(true? 89:89.1);
输出结果为:89.0
izard999 2009-06-10
  • 打赏
  • 举报
回复
自动类型转换阿.
小往大转 char->int
所以才会有6楼的结果

lulu0126 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dongyang369 的回复:]
public class Test{
public static void main(String[] args)
{
char x='Y';
char z = 'l';
int i=1;
System.out.println(true? x:i);//89
System.out.println(false ? i:x);//89
System.out.println(true? x:z);//Y
}
}

自动类型转换问题!看看上面的就明白了
[/Quote]

这个东西,给我结果我能想明白!

否则 直接让我写答案,我肯定第一反映就写错!

学习了! tks!
97095639 2009-06-10
  • 打赏
  • 举报
回复
public class Test{
public static void main(String[] args)
{
char x='Y';
char z = 'l';
int i=1;
System.out.println(true? x:i);//89
System.out.println(false ? i:x);//89
System.out.println(true? x:z);//Y
}
}

自动类型转换问题!看看上面的就明白了
胡须棉花糖 2009-06-10
  • 打赏
  • 举报
回复
System.out.println(x);
System.out.println(false ? i:x);

结果是
'Y'
89

=======

为啥?是吧楼主?
longq121 2009-06-10
  • 打赏
  • 举报
回复
首先‘Y’对应ASCI码值是89
System.out.print(true? x:i); 因为是ture所以输出:前面的那个值

System.out.print(false ? i:x); 因为是false所以输出,后面的那个值
meander 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xnjnmn 的回复:]
条件(三目)运算符 (?:)
根据条件执行两个语句中的其中一个。

test ? 语句1 : 语句2
为真语句1
为假语句2
[/Quote]

楼上已经说的很明白了,不知道LZ想问什么。
xnjnmn 2009-06-10
  • 打赏
  • 举报
回复
条件(三目)运算符 (?:)
根据条件执行两个语句中的其中一个。

test ? 语句1 : 语句2
为真语句1
为假语句2
YJALH12345 2009-06-10
  • 打赏
  • 举报
回复
为什么啊?

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧