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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ztwztw 中级黑马   /  2013-11-26 10:33  /  1481 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在教学视频中看到了这么一句话。
boolean b;
b=i<10|methodB(4);
b=i<10‖methoB(8);
这是什么意思

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 鼓励分+1

查看全部评分

4 个回复

正序浏览

  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. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
1 定义一个布尔值变量b
2 比较i<10然后看后面的是否为真,然后把两者的布尔值做逻辑或判断赋值给b 这个是非短路
3 比较i<10,若成立直接赋值b为true,若不成立,判断后面的,然后把两者的逻辑或结果赋值给b  这种是短路

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
楼上正解,这里主要学习的就是运算符顺序及|与||的区别。在面试题中也会出现,当然会比这个复杂一点,我朋友曾经遇上过 b = x>50&&y<30||x=30&&y>50||x<30&&y>50||x<-30&&y<50 类似的题,里面主要考的就是比较运算符的执行顺序,先考虑&&的结果再对其结果进行||运算

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
这个就是定义一个boolean变量,然后对其进行赋值操作。
你所列出来的主要涉及到两个知识点:
1.运算优先级:先进行i<10的比较,然后进行methodB()的运算并返回相应值,最后进行逻辑运算。
2.|和||的区别:|不具有短路效应 ,|两边都要进行运算,然后得出结果。
                     ||具有短路效应,如果其左边为true,则不会进行右边的运算,直接返回true。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马