黑马程序员技术交流社区

标题: 小问题希望大家解决一下 [打印本页]

作者: ztwztw    时间: 2013-11-26 10:33
标题: 小问题希望大家解决一下
在教学视频中看到了这么一句话。
boolean b;
b=i<10|methodB(4);
b=i<10‖methoB(8);
这是什么意思
作者: doitforyou    时间: 2013-11-26 10:40
这个就是定义一个boolean变量,然后对其进行赋值操作。
你所列出来的主要涉及到两个知识点:
1.运算优先级:先进行i<10的比较,然后进行methodB()的运算并返回相应值,最后进行逻辑运算。
2.|和||的区别:|不具有短路效应 ,|两边都要进行运算,然后得出结果。
                     ||具有短路效应,如果其左边为true,则不会进行右边的运算,直接返回true。

作者: freehiker    时间: 2013-11-26 10:45
楼上正解,这里主要学习的就是运算符顺序及|与||的区别。在面试题中也会出现,当然会比这个复杂一点,我朋友曾经遇上过 b = x>50&&y<30||x=30&&y>50||x<30&&y>50||x<-30&&y<50 类似的题,里面主要考的就是比较运算符的执行顺序,先考虑&&的结果再对其结果进行||运算
作者: RuntimeError!    时间: 2013-11-26 10:47
1 定义一个布尔值变量b
2 比较i<10然后看后面的是否为真,然后把两者的布尔值做逻辑或判断赋值给b 这个是非短路
3 比较i<10,若成立直接赋值b为true,若不成立,判断后面的,然后把两者的逻辑或结果赋值给b  这种是短路

作者: 忄雾飞扬    时间: 2013-11-26 10:50

  1. public class Demo5 {

  2.         //涉及到了基本整数变量i;由于需要被静态函数所以在这定义成了静态变量
  3.         static int i;
  4.         public static void main(String[] args) {
  5.                 //这句话是定义了一个boolean型变量
  6.                 boolean b;
  7.                 //这句代码是将|符号两边进行或运算,一边为真即为真,两边都进行运算,
  8.                 b = i < 10 | methodB(4);
  9.                 //这句代码是将||符号两边都进行或运算,这个运算符具有短路效果,当运算符左边为true是即为true,不再运算右边,当左边为false时,才运算右边
  10.                 b = i < 10 || methodB(8);
  11.         }
  12.         //由于代码中涉及到了这个函数,不知道你是怎么定义的,所以我在下面自己定义了一介返回值为boolean的methodB方法
  13.         private static boolean methodB(int j) {
  14.                 return j>5?true:false;
  15.         }

  16. }
复制代码





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