黑马程序员技术交流社区
标题:
求指教!输出结果为什么是4呢
[打印本页]
作者:
马林贺
时间:
2012-5-24 16:34
标题:
求指教!输出结果为什么是4呢
//定义静态变量 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 呢。
作者:
小小企鹅
时间:
2012-5-24 16:45
g=j<10|meb(4); // |位操作符 不管左边条件表达式是不是成立都执行
g=j<10||meb(8); // ||逻辑操作符 j<10为true不继续执行
作者:
马林贺
时间:
2012-5-24 16:49
栗培文 发表于 2012-5-24 16:45
g=j
g=j<10||meb(8); // ||逻辑操作符 j<10为true true 不是执行吗? False 才是不执行吗?
作者:
niceBoy
时间:
2012-5-24 16:50
g=j<10|meb(4); //不理解这里,两个返回的不都是真吗?
|位操作符 不管左边条件表达式是不是成立都执行
g=j<10||meb(8); //为什么输出的结果是 4 呢?
||逻辑操作符 只要左边成立,右边就不执行(多余)
作者:
田建
时间:
2012-5-24 16:54
嗯,主要是要区分开|和||的区别,|是在任何情况下都会执行前后的的程序;但||在前为真时,后面的程序不会执行;就如&和&&,&前后都会执行,而&&在前为假时,后面的程序不会执行!
作者:
袁錦泰
时间:
2012-5-24 16:55
马林贺 发表于 2012-5-24 16:49
g=j
你记错了。那时&&
作者:
陈栋
时间:
2012-5-24 16:55
|位运算符不管什么情况左右两边均执行;||运算符有短路作用如果左边成立右边则不继续执行,所以第二条中meb(8)没有执行
作者:
马林贺
时间:
2012-5-24 16:56
niceBoy 发表于 2012-5-24 16:50
g=j
理解了,因为左边已经是 真了,
所以就不执行右边了,要是左边是 假 的话才执行对吧。
如果是 j>10 结果就是12 了吧。
作者:
马林贺
时间:
2012-5-24 16:57
懂了,谢谢大家了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2