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);
  }

解决方案 »

  1.   

    条件(三目)运算符 (?:)
    根据条件执行两个语句中的其中一个。test ? 语句1 : 语句2
    为真语句1 
    为假语句2
      

  2.   

    首先‘Y’对应ASCI码值是89
    System.out.print(true? x:i);  因为是ture所以输出:前面的那个值System.out.print(false ? i:x); 因为是false所以输出,后面的那个值
      

  3.   

    System.out.println(x);
    System.out.println(false ? i:x);结果是
    'Y' 
    89=======为啥?是吧楼主?
      

  4.   

    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
      }
    }  自动类型转换问题!看看上面的就明白了
      

  5.   


    这个东西,给我结果我能想明白!否则 直接让我写答案,我肯定第一反映就写错!学习了! tks!
      

  6.   

    自动类型转换阿.
    小往大转   char->int 
    所以才会有6楼的结果
      

  7.   

    条件(三目)运算符 (?:) 会自动向上转型。
    此例中char-->int型。
    所以输出结果为:89 89
    记得在哪个网站上看到类似的题目,说得是:
    System.out.println(true? 89:89.1);
    输出结果为:89.0
      

  8.   

    本帖最后由 AWUSOFT 于 2009-06-11 08:45:28 编辑
      

  9.   

    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
      

  10.   

    如果第二个和第三个操作数具有相同的类型,那么它就是条件表达式的类型。如果一个操作数的类型是T,T表示byte、short或char,而另一个操作数是一个int类型的常量表达式,它的值是可以用类型T表示的,那么条件表达式的类型就是T。否则,将对操作数类型运用二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类型。