public class Text
{
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(4);
b=i<10||methodB(8);
}
public static void main(String[] args)
{
methodA(0);
System.out.println(j);
}
}
这段小代码,是毕向东老师第十天视频里的一个小练习题,按照道理来说,应该不会出现问题,但我在这段代码上着实有点想不清楚。但是一旦想通了,也就觉得这个代码没什么意思了。其实也是,这段代码毫无实用性可言,唯一的作用就是检验这段时间学习的质量。我把他记录下来,记录下自己的问题,方便自己以后的复习,另外,也是没准是哪位朋友也不懂这个呢?
首先,做起码的逻辑我是明白的。运行主函数的时候,首先运行methodA方法,int i=0,将0带入methodA方法中。但是首先我不明白的是,boolean b,到底有个什么用?
我的结论是,没有用。这只是定义了一个boolean型变量而已,只是用于下面程序的运行。如果我们要的是System.out.println(b),那我们就能知道b的值是true还是false了,但是在本段代码中,b的值是无所谓的。
接下来就是|和||的区别了。一步一步的看,当将i=0传入函数的时候,我们开始运行第一行:b=i<10|methodB(4);这个时候methodB开始运行,给k赋值为4,运行methodB,结果为j=4;然后返回值为true。b=true|ture,结果为true,虽然b的值没有什么用。
然后运行第二段:b=i<10||methodB(8);程序从左开始运行,当运行到i<10的时候,很明显,0<10是true的,根据||的特点,两边至少有一个true的时候结果就是true,所以当||左边为true的时候,程序根本就不运行||右边的代码,所以methodB(8)这段代码根本就没有运行,所以8这个数值就根本就没有传入到methodB中,所以j还是为4。所以这个b的值到底是什么根本没什么影响,这里只是考我们,计算机运行哪一步,运行到哪里。
让我不理解的第二个点就是:methodA中为何要返回一个true呢?直接privat static void methodB(int k)不行么?不要返回值。在这块我也想了一会,其实这个更简单,因为methodB()要用于下面的判断,用于|和||的判断,两边类型只能是boolean型函数。
所以只是一个很简单的代码,但是却让我想了很久。这其实也是体现出我基本功根本不扎实,有些地方一眼就能看破的,我却要想好久,这个真是督促我,打好基础。
另一个我也是发现,我读代码的时候,都会发现里面的好多小细节,那这个代码的编写者,是得多细心,才能注意这些细节啊。||和|的区别运用,两边必须是boolean型,所以上面函数的返回值也是boolean型返回值。这些细节,都是以后的学习中需要注意的,以后自己编代码,也是要如此。
这是我对这题的理解,可能大家觉得没什么,但是还真是想了好久。哈哈,希望大家多多交流。
|
|