黑马程序员技术交流社区
标题:
求教高手帮我看下这个问题
[打印本页]
作者:
王--明
时间:
2012-1-16 11:31
标题:
求教高手帮我看下这个问题
1:下面一道程序问题,看了很多解法,有一个疑问,这道题的结果,到底是多少。请教各位大侠们,帮我解惑。
2:b = i < 10 || methodB(12); 这句话为什么没有执行到?
private static int j = 0;
private static boolean methodB(int k)
{
j += k;
return true;
}
public static void methodA(int i)
{
boolean b;
b = i < 10 | methodB(7);
b = i < 10 || methodB(12);
}
public static void main(String[] args)
{
methodA(0);
System.out.println(j);
}
作者:
刘基军
时间:
2012-1-16 11:54
1.输出结果为:
7
2.b = i < 10 || methodB(12); 这句并不是没有执行,而是只执行了i<10的判断,这边使用的是“||”(短路或),i<10结果已经是true,所以整个表达式的结果也为true,就不会再进行 methodB(12)的判断。(搞清楚:| 与 || 的区别,就知道了)
作者:
刘明瑞
时间:
2012-1-16 12:44
百度一下| 与 || 的区别
作者:
Joyuang
时间:
2012-1-16 16:13
仔细分析下就知道了,b = i < 10 || methodB(12); 这段代码执行了,只是判断了i(0)<10之后就返回了true,剩下的methodB(12)没有执行。
||用法:具有短路效果,如果前半是true,表达式结果一定为true,不运行后一半
作者:
小白
时间:
2012-1-16 17:50
短路运算符|和||的区别!
作者:
王杰
时间:
2012-1-16 17:51
以后遇到问题先百度或谷歌,那样对自己更有好处..呵呵,,你去百度一下楼上说的|和||的区别吧?
作者:
魏腾飞
时间:
2012-1-16 19:15
public class ProblemDemo { //
private static int j = 0;
private static boolean methodB(int k)
{
j += k;
return true;
}
public static void methodA(int i) //第二步:执行静态方法区的methodA(),同时将i=0赋值。
{
boolean b;
b = i < 10 | methodB(7);//第三步:
b = i < 10 || methodB(12); //没有执行
}
public static void main(String[] args)
{
methodA(0);//第一步:调用静态方法methodA()传入0.
System.out.println(j);
System.out.println((true|true));
}
}
看到这个题目,尤其是两个符号“|”和"||"觉得长见识了。(长见识的理由)| :(不太明确)当两边操作数的位有一边为1时,结果为1;但是该运算符还能操作逻辑运算。应该属于运算符两侧都必须执行(不太确定。我第一次碰见···)||:或(逻辑运算符),指的是两个条件符合一个就ok,在有些情况下,如果(条件1)||(条件2)当条件1是true时,条件2的运算可以直接略过不计算。
作者:
沈样
时间:
2012-1-19 19:27
||这个短路或,只要一个假就直接返回假,例如第一个计算为假就直接返回假,不会再判断后面的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2