1、谈谈你对&和&&的理解?

(1)思路:在回答问题的时候,需要逻辑清晰,我们首先要答什么,然后在答什么,一定要有一个答题思路,在这道题中,首先它都属于java中的运算符,那么应该先理清他们的共同点,然后在说它们的区别;

(2)回答:首先&和&&都是java中的逻辑运算符,表示逻辑与,当运算符两边的表达式结果都为true时,结果才会为true,否则只要有一方为false,那么结果就是false。

各自的特点:

①:&&具有短路的功能,即如果第一个表达式的结果为false时,不再计算第二个表达式。

②:&可以用作位运算符,当其两边的表达式不是布尔类型时,&表示按位与操作。

适当的举例:

③:短路与(&&)举例:

对于if(str!=null&&!str.equals(“”))表达式,当str为null时,后面的表达式不会执行,也就不会出现空指针异常,如果将&&改为&,则会抛出空指针异常,

曾经在培训时考试遇到这样一道题:




java 跳出结果类型为void的方法_java 跳出多重嵌套循环


当时班里好多小白错了,这道题除了考察&&运算符外还有对自加自减的考察,

分析如下:初始化a=12,b=20;在if条件中a是先执行在自加,12与13不等,所以&&前面的表达式结果为false,此时a自加为13,因为&&具有短路与的功能,所以后面的表达式不执行,整个条件的结果为flase,所以if条件体中的代码不执行,这个题的结果为:a=13,b=20

第二个题目是如何跳出循环,我们在用到循环时可能没有特意的去思考过这个问题,想到时无法正确表述

2 、在java中如何跳出当前的多重嵌套循环?

(1)第一种方式:在外层循环语句前定义一个标号,在里层循环体代码中,使用带有标号的break语句,就可以跳出外层循环。

eg:


java 跳出结果类型为void的方法_java 跳出结果类型为void的方法_02


将这个例子放到eclipse中运行

若没有这个标志位,代码如下:


java 跳出结果类型为void的方法_java_03


结果应该是执行到i=9是才算完成,添加了这个ok标志位后,运行结果就变成了:


java 跳出结果类型为void的方法_java_04


但我们并不频繁的使用第一种方式,那就看看第二种跳出循环的方式。

(2)第二种方式:在代码中要能让外层循环条件表达式得结果受到内层循环体代码的控制,例如要在二维数组查找某个数字,代码如下:


java 跳出结果类型为void的方法_java 跳出结果类型为void的方法_05


在看到这个例子的时候,我一时间没能想起来二维数组,经过理解:

(1)这是一个二维数组的静态初始化,arr.length结果为3,arr[0].length结果为3,标注*哪行代码的意思是,在i行j列结果为5时跳出循环。

(2) 我做了这样一个测试,将found置为true这行代码注释掉,发现结果会多出一行,到数字9的位置。

(3)在第一个if中,&&为并且的意思,两个条件都为true时,循环语句才会执行,将found置为true,则外循环体直接不执行,跳出循环。

(4)说到这个,我们老师在介绍二维数组时,举了一个。。。呃三观不是很正的例子,假设你对象出轨了,你要去酒店找你对象,你肯定是需要先知道在几层,然后才能去找具体的房间号吧,所以二维数组就是这样一个情况,a[i][j],i代表层数,j呢就代表房间号。

————————————————

作者:「98年的秃头老阿姨」