黑马程序员技术交流社区

标题: 初学JAVA小问题 [打印本页]

作者: 孙飞    时间: 2012-6-17 20:16
标题: 初学JAVA小问题
本帖最后由 feigecal 于 2012-6-29 15:58 编辑

JAVA中的布尔变量是不是一定是true 才能输出
而且if(b)   system.out.........
默认的是不是b==true     ?   即 if(b)就是if(b==ture)?
如果要使b==false   是不是就需要在println之前写上b==false?

看这段代码
定义类和方法省略   就是最平常的定义方法
{
  {
boolean   b;
b=false;
system.out.println( "b   is "+b);
b=ture;   
system.out.println( "b   is "+b);
以上很简单   没什么
if(b)   system.out.println( "this   is   executed. ");
b=false;
if(b)   system.out.println( "this   is   not   executed. ");
system.out.println( "10> 9   is "+(10> 9));
}
}
输出结果是
b   is   false
b   is   ture
this   is   executed
10> 9   is   ture
为什么其中没有this   is   not   executed?
那句b=false定义了有什么用呢?
作者: 张_涛    时间: 2012-6-17 20:29
1. boolean类型变量的默认值是false
2. if(boolean expression) {若布尔表达式为真,则执行代码块中的语句}
3. if(b==true)与if(b)是等价的,因为b==true这个语句的结果就是一个布尔类型,当时前者有必要么?因此你不会看到别人if(b==true)这样写的。
作者: 孙浩迪    时间: 2012-6-17 20:42
boolean   b;
b=false;
system.out.println( "b   is "+b);
b=ture;   
system.out.println( "b   is "+b);
以上很简单   没什么
if(b)   system.out.println( "this   is   executed. ");
b=false;

if(b)   system.out.println( "this   is   not   executed. ");   //这里应该这样写if(!b)  system.out.println("");  你已经把b变成flase了 if(b)这里是真才能进if()判断,否则将不进入这个if();  如这样定义 if(!b) 就是非真即假的意思, 就是假可以进去,就会执行打印了。
system.out.println( "10> 9   is "+(10> 9));
}
}
输出结果是
b   is   false
b   is   ture
this   is   executed
10> 9   is   ture
为什么其中没有this   is   not   executed?


你真假判断没有分清。。。


作者: 王海江    时间: 2012-6-17 20:46
1、没有this is not executed的原因是if(b)   system.out.println( "this   is   not   executed. "); 语句中的b是false值,所以不执行输出语句。
2、b=false;语句的含义是赋值啊,改变变量b的值。

作者: sbeeqnui1987    时间: 2012-6-17 20:50
java中默认的布尔变量的值是false,所以你在

system.out.println( "this   is   not   executed. ");
之前定义了b=false;
if(b)   system.out.println( "this   is   not   executed. ");
system.out.println( "10> 9   is "+(10> 9));
这两句相当于
if(b){
      system.out.println( "this   is   not   executed. ");
}
else{
      system.out.println( "10> 9   is "+(10> 9));
}
此时b为false所以不执行system.out.println( "this   is   not   executed. ");
而执行system.out.println( "10> 9   is "+(10> 9));

if(b)表示的是if(b   ==   true),
如果要判断b是否为false应该用if(!b),
你在第一次输出后设置b   =false,可是仍然判断b为true时打印,当然不会打出来了

作者: 王广丛    时间: 2012-6-17 20:50
if(条件){}此代码表示:只有在条件为真即true的情况下才执行if中的代码,也就是说如果你的条件是假即false的时候,是不会执行的,所以你可以这样:
b = false;
if(!b){
system.out.println( "this   is   executed. ");
}

或者这样:
if(b == false){
system.out.println( "this   is   executed. ");
}
但是还是推荐你用第一中,因为第一种闲的水平比较高,第二种看着不舒服,感觉很啥老冒
作者: 邓杰    时间: 2012-6-17 20:53
class  Bool
{
        public static void main(String[] args)
        {
                boolean   b; //默认情况下也为false;
                b=false; //手动定义一下也没有问题;
                System.out.println( "b   is "+b);
                b=true;   
                System.out.println( "b   is "+b);
                //以上很简单   没什么
                if(b) //b为true所以执行了下面的 this is executed;
                        System.out.println( "this   is   executed. ");
                b=false;
                if(b)  //b为false所以下面的代码不执行;因为没有加{}进行区分 ;
                        System.out.println( "this   is   not   executed. ");
                System.out.println( "10> 9   is "+(10> 9)); //所以仅对上面一行代码有效;此句代码仍然会执行;

        }
}
/*
//要明白这个结果原因就是先知道条件判断试的原理;
if (true)//只有当这时原if()括号里的值为真时,下面的代码才会执行;
{
        //如果没有{}来区分if()只会通过条件的真假来决定是否执行下一行代码;记住仅执行一行;
        //一般情况建议用{}来把需要执行的代码封闭起来;哪怕只有一句也用{};养成良好的习惯 ;
        System.out.println("执行语句;");
        for循环也一个样只有条件为真时才执行下面的语句;
}
另外 int true ,boolean false ,String null;
一般情况 基本数据类型默认为0;boolean默认为false 引用型数据变量默认为null;

*/
作者: 黑马黄宏强    时间: 2012-6-17 20:54
因为你的代码运行到if(b)   system.out.println( "this   is   not   executed. ");
布尔表达式的值为 false 所以 if后面的语句是不会执行的,所以结果中不会出现“this   is   not   executed?

布尔b赋值的作用就是当就是让if语句就跟据b的值确定是否执行后面的代码,这不正是我们所需要的结果吗?
作者: 龙秋地    时间: 2012-6-17 20:55
"(1)为什么其中没有this   is   not   executed?
(2)那句b=false定义了有什么用呢?"
先回答第一个问题,因为你在这句之前定义了b=false;
那就证明你把false赋给了b,
if(b)
     system.out.println( "this   is   not   executed. ");
因为b是错的,所以不执行if中的语句,也就是不打印this   is   not   executed.这句话.
还有第二个问题,上面已经说了,
楼主可能是没明白"="和"=="的作用吧.
"="是赋值,不返回值.
"=="是判断返回的是true或者false.


作者: 胡大强    时间: 2012-6-17 22:58
b=false;
if(!b)   system.out.println( "this   is   not   executed. ");

b=false;
if(b)...此时if中的判断为假。。当然不会输出if中的代码。。。。if中的代码要为真才执行下来、、、不是说你定义了b=false,然后if(b)就执行下来的。





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