黑马程序员技术交流社区

标题: 求助 这里的原理?? [打印本页]

作者: 徐升2013    时间: 2013-3-8 22:09
标题: 求助 这里的原理??
public class Testif
{
        public static void main(String args[])
        {
                if(5>2)
                        System.out.println(5>2);
        }
}
代码如上很简单,但是我让输出的是5>2为什么打印结果是true?

这里面是怎么操作的?将5>2封装成一个对象了么?或者是自动转换成boolean类型的变量了么?就为了问这个。求原理

作者: 张卫刚    时间: 2013-3-8 22:17
  System.out.println(”5>2“);//你要输出的是5>2加个双引号就行了
作者: 徐升2013    时间: 2013-3-8 22:28
我想问的是这里是不是就是把5>2封装成一个boolean类型的对象了,该对象是不是属于一个匿名对象,是这个意识
作者: 黑马17期-闫东东    时间: 2013-3-8 23:10
5>2的结果是boolean类型,true或者false。

作者: scott0610    时间: 2013-3-8 23:11
根据Java中关系运算符的原理,逻辑运算符只能返回两个结果,一个是真(true),一个是假(false)。
5>2返回的肯定是真。所以打印的是true。

希望对你有所帮助!
作者: HM马明宇    时间: 2013-3-9 00:07
原理的话看源码就知道了
你输出的5>2  在没有加双引号的情况下,是一个boolean类型的表达式,它实质上会产生一个boolean类型的变量,你再看看print函数是怎么写的就明白了,下面是print函数
  1. public void print(boolean b) {
  2.         write(b ? "true" : "false");
  3.     }
复制代码
如果你有基础的话你应该能明白,print函数(没有找println函数是因为麻烦,这里简化处理)传递的参数的时候,如果参数类型是boolean的话,会在写出true或者是false,这取决于你的变量是true还是false

另外xx?yy:zz  这是三目运算符,表示如果?前面的条件满足(因为这里b是boolean类型变量,即判断b是否为true即可)执行?后面的操作,若不满足,执行:后面的操作

你的5>2显然为true,所以print函数写了一个带引号的"true",即一个字符串true,表示5>2这个boolean类型的表达式的值为true

如果想看write函数具体是怎样执行的,可在MyEclipase环境里按住Ctrl键,再左键单击函数名就行了,我上面给你的代码就是print函数的代码,你也可以自己去看看println函数的代码


如果你刚开始学的话,可能看不太懂,但是别着急  一步一步来,慢慢就会明白了

加油哦,希望能帮到你

作者: amen0205    时间: 2013-3-9 03:51
5>2  在这里是关系表达式  计算完成才会输出  当然是true

要想输出字符串  那就写“5>2”  OK了


作者: 李辉    时间: 2013-3-9 05:07
楼上说的都对,不是封装成对象!是运算了,5>2的运算结果就是true,你可以看看操作符那里的知识。
作者: 杨剑    时间: 2013-3-9 21:46
光明宇宙 发表于 2013-3-9 00:07
原理的话看源码就知道了
你输出的5>2  在没有加双引号的情况下,是一个boolean类型的表达式,它实质上会产 ...

我也学习了
作者: HM马明宇    时间: 2013-3-10 09:55
杨剑 发表于 2013-3-9 21:46
我也学习了

共同提高哦~




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