true和false
Java不允许我们将一个数字作为布尔值使用 在C和C++里是允许的(真 是非零 而 假 是零)
if-else
else if 并非新的关键字 而仅仅只是一个else后面紧跟另一个新的if语句
迭代
while和do-while唯一的区别就是do-while中的语句至少会执行一次 即便表达式第一次就被计算为false 而在while循环结构中 如果条件第一次就为false 那么其中的语句根本不会执行 在实际应用中 while比do-while更常用一些
for循环可能是最经常使用的迭代形式 这种在第一次迭代之前要进行初始化
初始化(initialization)表达式 布尔表达式(Boolean-expression) 或者步进(step)运算 都可以为空 每次迭代前会测试布尔表达式 若获得的结果是false 就会执行for语句后面的代码行 每次循环结束 会执行一次步进 for循环常用于执行 计数 任务
逗号操作符 在控制表达式的初始化和步进控制部分 可以使用一系列由逗号分隔的语句 而且那些语句均会独立执行
通过使用逗号操作符 可以在for语句内定义多个变量 但是它们必须具有相同的类型
Foreach语法
for(float x : f) {}
这条语句定义了一个float类型的变量x 继而将每一个f的元素赋值给x
任何返回一个数组的方法都可以使用foreach
return
return关键词有两方面的用途:一方面指定一个方法返回什么值(假设它没有void返回值) 另一方面它会导致当前的方法退出 并返回那个值
break和continue
在任何迭代语句的主体部分 都可用break和continue控制循环的流程 其中 break用于强行退出循环 不执行循环中剩余的语句 而continue则停止执行当前的迭代 然后退回循环起始处 开始下一次迭代
无穷循环 while(true) 或者 for(;?
臭名昭著的goto
若条件A成立 则跳到这里 否则跳到那里
Java没有goto
标签 标签是后面跟有冒号的标识符 label1:
在(1)中 break中断内部迭代 回到外部迭代 在(2)中 continue使执行点移回内部迭代的起始处 在(3)中 continue label1同时中断内部迭代以及外部迭代 直接转到label1处 随后 它实际上是继续迭代过程 但却从外部迭代开始 在(4)中 break label1也会中断所有迭代 并回到label1处 但并不重新进入迭代 也就是说 它实际是完全中止了两个迭代
- 一般的continue会退回最内层循环的开头(顶部) 并继续执行
- 带标签的continue会到达标签的位置 并重新进入紧接在那个标签后面的循环
- 一般的break会中断并跳出当前循环
- 带标签的break会中断并跳出标签所指的循环
在Java里需要使用标签的唯一理由就是因为有循环嵌套存在 而且想从多层嵌套中break或continue
switch
switch有时也被划归为一种选择语句 根据整数表达式的值 switch语句可以从一系列代码中选出一段去执行
其中 Integral-selector(整数选择因子)是一个能够产生整数值的表达式 switch能将这个表达式的结果与每个integral-value(整数值)相比较 若发现相符的 就执行对应的语句(单一语句或多条语句 其中并不需要括号) 若没有发现相符的 就执行default(默认)语句
在上面的定义中 break可使执行流程跳转至switch主体的末尾 若省略break 会继续执行后面的case语句 直到遇到一个break为止
选择因子必须是int或char那样的整数值 以及enum