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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐升2013 中级黑马   /  2013-3-8 22:09  /  1590 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Testif
{
        public static void main(String args[])
        {
                if(5>2)
                        System.out.println(5>2);
        }
}
代码如上很简单,但是我让输出的是5>2为什么打印结果是true?

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

9 个回复

倒序浏览
  System.out.println(”5>2“);//你要输出的是5>2加个双引号就行了
回复 使用道具 举报
我想问的是这里是不是就是把5>2封装成一个boolean类型的对象了,该对象是不是属于一个匿名对象,是这个意识
回复 使用道具 举报
5>2的结果是boolean类型,true或者false。
回复 使用道具 举报
根据Java中关系运算符的原理,逻辑运算符只能返回两个结果,一个是真(true),一个是假(false)。
5>2返回的肯定是真。所以打印的是true。

希望对你有所帮助!
回复 使用道具 举报
原理的话看源码就知道了
你输出的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函数的代码


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

加油哦,希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
5>2  在这里是关系表达式  计算完成才会输出  当然是true

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

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

我也学习了
回复 使用道具 举报
杨剑 发表于 2013-3-9 21:46
我也学习了

共同提高哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马