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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

逻辑运算符的优先级是 !  > &&  > ||  所以  f && f || f && f || f && f || f && f  把两个f&&f的计算是优先的 也就是全部都是false,全部false的或运算自然是false。不过,个人感觉,不需要在意这种东西,毕竟代码是为了表达我们的意图的,能让人一目了然是最好的
回复 使用道具 举报
Joseph_liuxh 来自手机 中级黑马 2015-1-3 21:28:18
22#
[quote]cxj 发表于 2014-12-28 00:49
当f=false那样时,你可以把 b=f

这个答案逻辑清晰,回答的很到位
学习了。
回复 使用道具 举报
根据优先级先算&& 再算||  f && f  全部的f&&f 都是false  然后算|| 因为都是false 所以都是false,最后b是false
如果你改成 b=f && f || f && f || f && f || t && t ;  同理 f&&f是false 但是 t&&t是true 最后是false||false||false||true  || 只要有一个为true就是true 所以最后b=true
回复 使用道具 举报
&&的优先级高于||,&&两边都为真的时候,结果才为真,否则为假。||表示两边都为假的时候,结果才为假。由于&&优先级高于||,所以在程序中先运行&&,运行完之后再运行||。b=f&&f||f&&f||f&&f||f&&f,f&&f为假,所以就是b=假||假||假||假,假||假=假,所以b=假。当b=t&&t||t&&t||t&&t||t&&t,t&&t=真,b=真||真||真||真,真||真=真,所以b=真。
回复 使用道具 举报
&&的优先级高于||,&&两边都为真的时候,结果才为真,否则为假。||表示两边都为假的时候,结果才为假。由于&&优先级高于||,所以在程序中先运行&&,运行完之后再运行||。b=f&&f||f&&f||f&&f||f&&f,f&&f为假,所以就是b=假||假||假||假,假||假=假,所以b=假。当b=t&&t||t&&t||t&&t||t&&t,t&&t=真,b=真||真||真||真,真||真=真,所以b=真。
回复 使用道具 举报
这是逻辑运算符呀,都是同一级的,从左到右运算0&&0||0&&0||0&&0||0&&0=false,1&&1||1&&1||1&&1||1&&1||1&&1=1
回复 使用道具 举报
package ab.wkq;

public class Test111 {
        public static void main(String [] args)
        {
              boolean b,t=true,f=false;
              b=t && (t ||f) && f || f && f || f && f ;
              System.out.println(b);
             
        }
}
做了一个简单的测试,你可以用括号来证明,证明结果是&&先运行,然后才运行双或
根据优先级问题双与的优先级大于双或。
f && f || f && f || f && f || f && f   的运算顺序。。
先运行f&&f,然后依次运行II两旁boolean值。
回复 使用道具 举报
你应该看看视频!里面教的很详细!
回复 使用道具 举报
本帖最后由 zhengyk 于 2015-1-19 17:38 编辑
  1. class Test
  2. {
  3.         public static class test
  4.         {
  5.                 public static boolean test1(boolean val){
  6.                 System.out.println("test1("+val+")");
  7.                 return val;
  8.                 }
  9.                 public static boolean test2(boolean val){
  10.                 System.out.println("test2("+val+")");
  11.                 return val;
  12.                 }
  13.                 public static boolean test3(boolean val){
  14.                 System.out.println("test3("+val+")");
  15.                 return val;
  16.                 }
  17.         }
  18.         public static void main(String[] args)
  19.         {
  20.                 boolean b=test.test1(true)||test.test2(true)||test.test3(true);
  21.                 System.out.println("expression is "+b);
  22.         }
  23. }
复制代码
参数都传true时:
test1(true)
expression is true
参数都传false时:
test1(false)
test2(false)
test3(false)
expression is false参数都传第二个参数传true时:
test1(false)
test2(true)
expression is true
这里就写了三个参数相或的结果,同理四个或也是一样的。
当前面已判断出true时,后面就不再判断。


回复 使用道具 举报
很不错啊。
回复 使用道具 举报
&&的优先级大于||,所以会先运算&&
回复 使用道具 举报
涨姿势了。。。。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马