黑马程序员技术交流社区

标题: 三目运算符求解释 [打印本页]

作者: sixth    时间: 2012-11-7 10:52
标题: 三目运算符求解释
class Test
{
        public static void main(String[] args)
        {
                System.out.println(true?'a':99999) ;
                System.out.println(true?'a':99) ;
                System.out.println(true?'a':1) ;
        }
}
这个答案是:97 a  a

class Test
{
        public static void main(String[] args)
        {
                int i = 99 ;
                System.out.println('a' + 99999) ;
                System.out.println('a' + 99) ;
                System.out.println('a' + i) ;

        }
}
好吧,再看看这个。。。




作者: 打工人    时间: 2012-11-7 10:58
给你一篇文章看看,你就明白了
http://blog.csdn.net/lowkeysk/article/details/7927854
作者: 黑马周磊    时间: 2012-11-7 12:01
我说说我的理解吧,不对的话,我们一起学习。

class Test
{
         public static void main(String[] args)
        {
                 System.out.println(true?'a':99999) ;  //如果条件为真,打印'a'的ASCII码值“97”,如果条件为假,打印99999;
                 System.out.println(true?'a':99) ;       //如果条件为真,打印'a'的ASCII码值“97”,如果条件为假,打印99;
                 System.out.println(true?'a':1) ;         //如果条件为真,打印'a'的ASCII码值“97”,如果条件为假,打印1;
         }
}


class Test
{
         public static void main(String[] args)
        {
                 int i = 99 ;
                 System.out.println('a' + 99999) ;    //打印'a'的ASCII码值“97”+整数99999的和,;
                 System.out.println('a' + 99) ;         //打印'a'的ASCII码值“97”+整数99的和,;
                 System.out.println('a' + i) ;            //打印'a'的ASCII码值“97”+变量 i 的值99, 97+99的和;

        }
}
作者: 徐军涛    时间: 2012-11-7 12:37
Java中任何数据都是由类型的;特别是基本数据类型不但有类型,还有范围
使用基本数据类型的2中情况:
1,定义类型后进行初始化的时,虚拟机会自动检测初始化数值是否在该类型的范围内(超出编译失败);
2,没有定义类型,虚拟机就检测该数值符合那种基本类型的范围,就默认为为那种类型(为节约内存,都是符合范围的最小子集的类型。如:9byte))
基本数据类型,类型提升:
              需要满足2个条件:
                     1,两种类型彼此兼容
                     2,转换的目标类型的范围一定要大于转换的源类型
                     注意:如果范围一样,低精度向高精度转换。
所以:
       true?'a':99999  等价于:true?'a'(char):99999(int)        结果:97
       true?'a':99       等价于:true?'a'(char):99(byte)           结果:a
       true?'a':1         等价于:true?'a'(char):1(byte)             结果:a
       ------------
       inti=99
       'a'+99999        等价于:'a'(char)+99999(int)                     结果:100096
       'a'+99             等价于:'a'(char)+99(int)                   结果:196
       'a'+I               等价于:'a'(char)+i (int)                     结果:196
              
              
              

作者: sixth    时间: 2012-11-7 12:50
黑马周磊 发表于 2012-11-7 12:01
我说说我的理解吧,不对的话,我们一起学习。

class Test

你运行这个程序了吗,结果肯定不是这么简单的。
作者: sixth    时间: 2012-11-7 12:54
徐军涛 发表于 2012-11-7 12:37
Java中任何数据都是由类型的;特别是基本数据类型不但有类型,还有范围使用基本数据类型的2中情况:1,定义 ...

嗯嗯 ,谢谢了!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2