黑马程序员技术交流社区
标题:
面试题,求解.
[打印本页]
作者:
李琼
时间:
2012-10-30 00:30
标题:
面试题,求解.
本帖最后由 李琼 于 2012-10-30 18:35 编辑
public class Test {
public static void main(String[] args) {
methodA(0);
System.out.println(j);
}
private static int j = 0;
public static boolean methodB(int k) {
j += k;
return true;
}
public static void methodA(int i) {
boolean b;
b = i > 10 & methodB(1);
b = i > 10 && methodB(2);
}
}
复制代码
求解...
作者:
徐升兴
时间:
2012-10-30 00:45
本帖最后由 徐升兴 于 2012-10-30 00:52 编辑
结果是1,先占楼
这个题其实考的是&和&&的运算机制 还有+=的运算机制
&是两边都要进行运算
而&&则是左边如果为假,右边不运算,左边为真,再运算右边
public static void methodA(int i) {
boolean b;
b = i > 10 & methodB(1);//这里传进来0,0<10,为假。但是要运算右边,所以调用了methodB,传进去了1
b = i > 10 && methodB(2);//这里还是0<10,为假,所以右边不执行,这样methidB就没有调用,
也就是说method只调用了一次,传进去了一个1
所以结果为1
作者:
马磊
时间:
2012-10-30 00:49
b = i > 10 & methodB(1); & 在前面是false的时候还会继续后面表达式的运算,也就是会执行methodB(1),这个方法把 j 变成了1
而 b = i > 10 && methodB(2); &&有短路效果,当判断到前面为false的时候,就不会继续判断后面表达式的值,直接返回false,所以methodB(2) 根本就没有运行到。
所以答案是 1
作者:
杨千里
时间:
2012-10-30 01:46
本帖最后由 杨千里 于 2012-10-30 18:52 编辑
这段小代码有点唬人
public class Test {
public static void main(String[] args) {
java是按顺序执行的
// System.out.println(j); 把这个打开 你会更明白
methodA(0);
//执行后,j的值为1;
System.out.println(j);
}
private static int j = 0;
public static boolean methodB(int k) {
j += k;
return true;
}
public static void methodA(int i) {
boolean b;
b = i > 10 & methodB(1);
// j的值为1, 0>10为假,后面继续执行。
methodB(1)方法中 j 的值为1;
b = i > 10 && methodB(2);
// 0>10为假,短路后面不执行 所以
methodB(2); 不执行
//如果&&运算符的前面的结果为false, 无论后面的值是什么, 其结果都是false.
}
}
作者:
崔政
时间:
2012-10-30 13:19
直接上代码!
package test;
public class Test3 {
public static void main(String[] args) {
methodA(0); //按顺序走
System.out.println(j);//所以输出 结果为 1
}
private static int j = 0;
public static boolean methodB(int k) {
j += k; //j=0,k=1,j+=k,所以j=1,返回true。
return true;
}
public static void methodA(int i) {
boolean b;
b = i > 10 & methodB(1);//&逻辑运算符,与,无论左边真假与否,右边都要判断,i>10为假,执行methodB(1)
//通过methodB的运算,返回真,但左边已经回假,所以b现在为false,不过这无关紧要。因为是静态方法
b = i > 10 && methodB(2);//&& 逻辑运算符,与,如果左边卫假,右边不再判断。
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2