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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马林贺 中级黑马   /  2012-5-24 16:34  /  1494 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        //定义静态变量 i
        static int i=0;
       
        //创建方法返回  true
       
        static boolean meb(int j)
        {
                i+=j;
                return true;
        }
       
        //创建方法  判读  
        static void  mea(int j)
        {
                boolean g;
                g=j<10|meb(4);    //不理解这里,两个返回的不都是真吗?
                g=j<10||meb(8);   //为什么输出的结果是 4 呢?
               
               
        }
       
        public static void main(String[] args) {
               
               
                //调用方法  
                mea(0);
               
                System.out.print(i);

        }

   我以为输出的结果是12 呢。

8 个回复

倒序浏览
g=j<10|meb(4);    // |位操作符 不管左边条件表达式是不是成立都执行
g=j<10||meb(8);   // ||逻辑操作符 j<10为true不继续执行
回复 使用道具 举报
栗培文 发表于 2012-5-24 16:45
g=j

g=j<10||meb(8);   // ||逻辑操作符 j<10为true   true  不是执行吗?  False  才是不执行吗?
回复 使用道具 举报
g=j<10|meb(4);    //不理解这里,两个返回的不都是真吗?
|位操作符 不管左边条件表达式是不是成立都执行
g=j<10||meb(8);   //为什么输出的结果是 4 呢?
||逻辑操作符 只要左边成立,右边就不执行(多余)

评分

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

查看全部评分

回复 使用道具 举报
嗯,主要是要区分开|和||的区别,|是在任何情况下都会执行前后的的程序;但||在前为真时,后面的程序不会执行;就如&和&&,&前后都会执行,而&&在前为假时,后面的程序不会执行!
回复 使用道具 举报
马林贺 发表于 2012-5-24 16:49
g=j

你记错了。那时&&
回复 使用道具 举报
陈栋 初级黑马 2012-5-24 16:55:52
7#
|位运算符不管什么情况左右两边均执行;||运算符有短路作用如果左边成立右边则不继续执行,所以第二条中meb(8)没有执行
回复 使用道具 举报
niceBoy 发表于 2012-5-24 16:50
g=j

   理解了,因为左边已经是 真了,
  所以就不执行右边了,要是左边是  假  的话才执行对吧。
  如果是 j>10  结果就是12 了吧。  
回复 使用道具 举报
  懂了,谢谢大家了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马