第四天
今日内容
循环
forwhiledo......whilebreakcontinue
for循环
语法:
for(初始表达式;循环条件表达式;循环后操作表达式)
{
执行语句;
}
break
跳出当前循环。
注意:在多层for循环中使用break跳出的是当前循环,若要跳出当前循环外的循环,要加标签。
continue
跳过末次循环之后,继续下一次循环。
若想跳出上一次循环,也需要使用标签。
while
当……时候
语法:
while(条件表达式)
{
执行表达式(循环体);
}
do......while
直到……什么时候
语法:
do
{
执行表达式(循环体);
}
while(条件表达式)
while与do......while区别
while:先判断,只有满足条件,再执行。
do......while:先执行循环体,再进行条件判断,条件满足,继续循环,不满足跳出循环。(do......while无论条件是否满足,循环体至少被循环一次)
使用循环体注意事项
一个需求,如果·有一个具体的范围——for。一个需求,不知道循环多少次,只是知道到达某一点就会推出循环——while。在循环中要避免死循环。一定要明确那些需要循环,哪些不参与循环。while初始化要在语句之外。for语句不写条件表达式会默认为true。
break和continue
俩个个语句应用范围都是循环体。两个语句离开应用范围无意义。两个语句单独存在,下面不可有语句,因为执行不到。若使用标签(标号),标号为外循环,内循环直接跳过。
最简单的死循环
for( ; ; ){ }while(true){ }
关于for循环嵌套(大权套小圈问题)
尖朝上,可改变条件,让条件随外循环变化。尖朝下,可以改变初始值,让初始值随外循环变化。
循环的特殊表现形式
class Demo
{
public static void main(String[] args)
{
int i = 2;
for(;i < 10;)
{
System.out.println("hehe");
i++;
}
}
}注意:使用上述的特殊形式一般的是由于后面的代码寻妖循环的变量。
class Demo
{
public static void main(String[] args)
{
for(System.out.println("hello");;)
{
}
}
}
上述语句会直接打印hello。
退出运行的程序
正常结束程序:System.exit(1)当程序发生宜异常,会结束程序。补充:
System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() 。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西。
System.exit(0)是正常退出程序,而
System.exit(1)或者说非0表示非正常退出程序。
System.exit(status)不管status为何值都会退出程序。和return 相比有以下不同点: return是回到上一层,而System.exit(status)是回到最上层。System.exit(0)
不是很常见,做过swing开发的可能用过这方法,一般用于Swing窗体关闭按钮。(重写windowClosing方法时调用System.exit(0)来终止程序,Window类的dispose()方法只是关闭窗口,并不会让程序退出)。System.exit(1):非常少见,一般在Catch块中会使用(例如使用Apache的FTPClient类时,源码中推荐使用System.exit(1)告知连接失败),当程序会被脚本调用、父进程调用发生异常时需要通过System.exit(1)来告知操作失败,默认程序最终返回的值返是0,即然发生异常默认还是返回0,因此在这种情况下需要手工指定返回非零。
自己补充
if......else语句不写大括号,执行语句只是里if,else最近的一条执行语句。If…..else……语句若if下不加大括号,且有两条语句,jvm识别不出If…..else……结构,并报错。使用临时变量一定给个初始值。Int 初始值一般给-
1 , char初始值一般给’\u0000’ ,boolean初始值一般给false。