A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sixth 中级黑马   /  2012-11-7 10:52  /  1787 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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



评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

5 个回复

倒序浏览
给你一篇文章看看,你就明白了
http://blog.csdn.net/lowkeysk/article/details/7927854

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
我说说我的理解吧,不对的话,我们一起学习。

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的和;

        }
}

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
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
              
              
              

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 赞一个!

查看全部评分

回复 使用道具 举报
黑马周磊 发表于 2012-11-7 12:01
我说说我的理解吧,不对的话,我们一起学习。

class Test

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

嗯嗯 ,谢谢了!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马