黑马程序员技术交流社区
标题: 三目运算符求解释 [打印本页]
作者: 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,没有定义类型,虚拟机就检测该数值符合那种基本类型的范围,就默认为为那种类型(为节约内存,都是符合范围的最小子集的类型。如:9(byte))
基本数据类型,类型提升:
需要满足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 |