Java学习笔记——控制执行流程
2013-08-20 14:25
513 查看
本文为Java编程思想第四版的学习笔记,在此感谢作者Bruce Eckel给我们带来这样一本经典著作,也感谢该书的翻译及出版人员。本文为原创笔记,转载请注明出处,谢谢。
1.true和false
Java中,所有条件语句都利用条件表达式的真或假来决定执行路径。Java中,不允许我们讲一个数字作为布尔值使用。
2.if-else
if-else语句是控制程序流程的最基本的形式。其中else是可选的,所以可按下述两种形式来使用if:
1)if(Boolean-expression)
statement
2)if(Boolean-expression)
statement
else
statement
3.迭代
while、do-while和for用来控制循环,有时将它们划分为迭代语句。语句会重复执行,直到起作用的布尔表达式得到“假”的结果为止。Java中迭代的使用方式如下:
1)while(Boolean-expression)
statement
2)do {
statement
} while(Boolean-expression); //注意这里有分号
3)for( initialization; Boolean-expression; step)
statement
注意:在Java中有一个操作符——逗号操作符(注意不是逗号分隔符,逗号用作分隔符时用来分隔函数的不同参数),Java中唯一使用逗号操作符的地方就是for循环的控制表达式。在控制表达式的初始化和不仅控制部分,可以使用一系列由逗号分隔符的语句;而且那些语句均会独立执行。通过使用逗号操作符,可以在for语句内定义多个变量,但是他们必须具有相同的类型。
4 Foreach语法
Java SE5引入了一种新的更加简洁的for语法用于数组和容器,即foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项。例如,假设有一个int数组a[10],我们要选取该数组中的每一个元素,可以这样写:
for( int i : n)
statement;
任何返回一个数组的方法都可以使用foreach,之后我们会看到,foreach还可以用于任何Iterable对象(迭代器对象)。
5.return
在Java中有多个关键词表示无条件分支,他们只是表示这个分支无需任何测试即可发生。这些关键词包括return、break、continue和一种与其他语言中goto类似的跳转到标号语句的方式。
return关键词有两个方面的用途:
1)制定一个方法返回什么值(嘉定他没有void返回值)
2)它会导致当前的方法退出,并返回那个值
如果在返回void的方法中没有return语句,那么在该方法的结尾处会有一个隐式的return,因此在方法中并非总是必须有一个return语句,但是,如果一个方法声明它将返回void之外的其他东西,那么必须确保每一条代码路径都有一个返回值。
6.break和continue
在任何迭代语句的主体部分,都可用break和continue控制循环的流程。其中break用于强行退出循环,不执行循环中剩余的语句。而continue则停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。
7.臭名昭著的goto
编程语言中一开始就有了goto关键词。事实上,goto起源于汇编语言的程序控制。goto语句是在源码级上的跳转,这使其招致了不好的声誉。真正的问题并不在于使用goto,而在与goto的滥用;而且少数情况下,goto还是阻止控制流程的最佳手段。
尽管goto仍是Java中的一个保留字,但在语言中并未使用它;Java没有goto,然而,Java也能完成一些类似于跳转的操作,这与break和continue两个关键词有关。它们其实不是一个跳转,而是终端迭代语句的一种方法。之所以把它们纳入goto问题中一起讨论,是有图它们使用了相同的机制:标签。
标签是后面跟有冒号的标识符,就像下面这样:
label1:
在Java中,标签起作用的唯一地方刚好是在迭代语句之前。”刚好之前“的意思表明,在标签和迭代之间置入任何语句都不好。而在迭代之前设置标签的唯一理由是:我们希望在其中嵌套另一个迭代或者开关。这是由于break和continue关键词通常只终端当前循环,但若随同标签一起使用,它们就会中断循环,直到标签所在的地方:
label1:
outer-iteration {
inner-iteration {
//...
break; // (1)
//...
continue; // (2)
//...
continue label1; // (3)
//...
break label1; // (4)
}
}
在(1)中,break中断内部迭代,回到外部迭代。在(2)中,continue使执行点一会内部迭代的起始处。在(3)中,continue label1同时终端内部迭代以及外部迭代,直接转到label1处;随后,它实际上是继续迭代过程,但却从外部迭代开始。在(4)中,break label1也会中断所有迭代,并回到label1出,但并不重新进入迭代。也就是说,它实际上是完全终止了两个迭代。
8.switch
switch有时也被划归为一种选择语句。根据整数表达式的值(JDK1.6版本之前,switch语句所选的的表达式只能是小于int类型的。本菜鸟发现,在JDK1.7版本之中,似乎可以在此使用String),switch语句可以从一系列代码中选出一段去执行,它的格式如下:
switch (integral-selector ) {
case integral-value1 : statement; break;
case integral-value2 : statement; break;
case integral-value3 : statement; break;
//...
defalult : statement;
}
每个case均以一个break结尾,这样可以使执行流程跳转至switch主体的末尾。这是构建switch语句的一种传统方式,但break是可选的。若省略break,会继续执行后面的case语句,知道遇到一个break为止。注意,default语句没有break,因为执行流程已到了break的跳转目的地。当然,如果考虑到编程风格方面额原因,完全可以在default语句的末尾放置一个break,尽管它并没有任何实际的用处;case语句能够堆叠在一起,为一段代码形成多重匹配,即只要符合多种条件中的一种,就会执行那段特别的代码。
总结:本章仍是Java编程的基础章节,有编程基础的童鞋对这些应该是了如指掌,本菜鸟在此也只是简单的摘录了些要点,以保证体系的完整性。
1.true和false
Java中,所有条件语句都利用条件表达式的真或假来决定执行路径。Java中,不允许我们讲一个数字作为布尔值使用。
2.if-else
if-else语句是控制程序流程的最基本的形式。其中else是可选的,所以可按下述两种形式来使用if:
1)if(Boolean-expression)
statement
2)if(Boolean-expression)
statement
else
statement
3.迭代
while、do-while和for用来控制循环,有时将它们划分为迭代语句。语句会重复执行,直到起作用的布尔表达式得到“假”的结果为止。Java中迭代的使用方式如下:
1)while(Boolean-expression)
statement
2)do {
statement
} while(Boolean-expression); //注意这里有分号
3)for( initialization; Boolean-expression; step)
statement
注意:在Java中有一个操作符——逗号操作符(注意不是逗号分隔符,逗号用作分隔符时用来分隔函数的不同参数),Java中唯一使用逗号操作符的地方就是for循环的控制表达式。在控制表达式的初始化和不仅控制部分,可以使用一系列由逗号分隔符的语句;而且那些语句均会独立执行。通过使用逗号操作符,可以在for语句内定义多个变量,但是他们必须具有相同的类型。
4 Foreach语法
Java SE5引入了一种新的更加简洁的for语法用于数组和容器,即foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项。例如,假设有一个int数组a[10],我们要选取该数组中的每一个元素,可以这样写:
for( int i : n)
statement;
任何返回一个数组的方法都可以使用foreach,之后我们会看到,foreach还可以用于任何Iterable对象(迭代器对象)。
5.return
在Java中有多个关键词表示无条件分支,他们只是表示这个分支无需任何测试即可发生。这些关键词包括return、break、continue和一种与其他语言中goto类似的跳转到标号语句的方式。
return关键词有两个方面的用途:
1)制定一个方法返回什么值(嘉定他没有void返回值)
2)它会导致当前的方法退出,并返回那个值
如果在返回void的方法中没有return语句,那么在该方法的结尾处会有一个隐式的return,因此在方法中并非总是必须有一个return语句,但是,如果一个方法声明它将返回void之外的其他东西,那么必须确保每一条代码路径都有一个返回值。
6.break和continue
在任何迭代语句的主体部分,都可用break和continue控制循环的流程。其中break用于强行退出循环,不执行循环中剩余的语句。而continue则停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。
7.臭名昭著的goto
编程语言中一开始就有了goto关键词。事实上,goto起源于汇编语言的程序控制。goto语句是在源码级上的跳转,这使其招致了不好的声誉。真正的问题并不在于使用goto,而在与goto的滥用;而且少数情况下,goto还是阻止控制流程的最佳手段。
尽管goto仍是Java中的一个保留字,但在语言中并未使用它;Java没有goto,然而,Java也能完成一些类似于跳转的操作,这与break和continue两个关键词有关。它们其实不是一个跳转,而是终端迭代语句的一种方法。之所以把它们纳入goto问题中一起讨论,是有图它们使用了相同的机制:标签。
标签是后面跟有冒号的标识符,就像下面这样:
label1:
在Java中,标签起作用的唯一地方刚好是在迭代语句之前。”刚好之前“的意思表明,在标签和迭代之间置入任何语句都不好。而在迭代之前设置标签的唯一理由是:我们希望在其中嵌套另一个迭代或者开关。这是由于break和continue关键词通常只终端当前循环,但若随同标签一起使用,它们就会中断循环,直到标签所在的地方:
label1:
outer-iteration {
inner-iteration {
//...
break; // (1)
//...
continue; // (2)
//...
continue label1; // (3)
//...
break label1; // (4)
}
}
在(1)中,break中断内部迭代,回到外部迭代。在(2)中,continue使执行点一会内部迭代的起始处。在(3)中,continue label1同时终端内部迭代以及外部迭代,直接转到label1处;随后,它实际上是继续迭代过程,但却从外部迭代开始。在(4)中,break label1也会中断所有迭代,并回到label1出,但并不重新进入迭代。也就是说,它实际上是完全终止了两个迭代。
8.switch
switch有时也被划归为一种选择语句。根据整数表达式的值(JDK1.6版本之前,switch语句所选的的表达式只能是小于int类型的。本菜鸟发现,在JDK1.7版本之中,似乎可以在此使用String),switch语句可以从一系列代码中选出一段去执行,它的格式如下:
switch (integral-selector ) {
case integral-value1 : statement; break;
case integral-value2 : statement; break;
case integral-value3 : statement; break;
//...
defalult : statement;
}
每个case均以一个break结尾,这样可以使执行流程跳转至switch主体的末尾。这是构建switch语句的一种传统方式,但break是可选的。若省略break,会继续执行后面的case语句,知道遇到一个break为止。注意,default语句没有break,因为执行流程已到了break的跳转目的地。当然,如果考虑到编程风格方面额原因,完全可以在default语句的末尾放置一个break,尽管它并没有任何实际的用处;case语句能够堆叠在一起,为一段代码形成多重匹配,即只要符合多种条件中的一种,就会执行那段特别的代码。
总结:本章仍是Java编程的基础章节,有编程基础的童鞋对这些应该是了如指掌,本菜鸟在此也只是简单的摘录了些要点,以保证体系的完整性。
相关文章推荐
- Java学习笔记4-控制执行流程
- 控制执行流程——(Java学习笔记三)
- Java学习笔记-控制执行流程
- Java 编程思想(第四版)学习笔记(4 )控制执行流程
- [Java编程思想-学习笔记]第4章 控制执行流程
- thinking in java 学习笔记(二)之控制执行流程
- java基础学习笔记第二天——流程控制
- java基础学习总结--控制执行流程
- java 学习笔记(入门篇)_程序流程控制结构和方法
- Thinking in JAVA笔记——第三章 操作符 &第四章控制执行流程
- JAVA学习笔记——第四章 流程控制
- Java学习笔记(三)-- 流程控制
- Java学习笔记六:Java的流程控制语句之if语句
- Java学习笔记七:Java的流程控制语句之switch
- java学习笔记4——流程控制语句
- ThinkingInJava 学习 之 0000003 控制执行流程
- JAVA学习笔记之三(控制程序流程)
- java编程思想学习笔记(4)--控制执行流程
- java学习---控制执行流程
- Java学习笔记八:Java的流程控制语句之循环语句