块作用域
在深入学习控制结构之前,需要了解块(block) 的概念。 块(即复合语句)是指由一对大括号括起来的若干条简单的 Java语句。块确定了变量的作 用域。一个块可以嵌套在另一个块中。下面就是在 main方法块中嵌套另一个语句块的示例。 public static void main(String口 args) { int n; r• int k;
} // k is only defined up to here
} 但是,不能在嵌套的两个块中声明同名的变量。例如,下面的代码就有错误,而无法通过编译: public static void main(String口 args) { int n; i int k; int n; // Error can't redefine n in inner block
}
}
条件语句
在 Java 中,条件语句的格式为 if (condition) statement 这里的条件必须用括号括起来。
与绝大多数程序设计语言一样, Java 常常希望在某个条件为真时执行多条语句。在这种 情况下, 应该使用块语句 (block statement), 形式为
{
statementi statement
}
例如:
if (yourSales >= target) { performance = "Satisfactory"; bonus = 100; } 当 yourSales 大于或等于 target 时, 将执行括号中的所有语句(请参看图 3-7 ) > 0 注释: 使用块 (有时称为复合语句)可以在 Java 程序结构中原本只能放置一条(简单)语 句的地方放置多条语句。
while 语句
while语句会反复地进行条件判断,只要条件成立,执行循环体,直到条件不成立,while循环结束。
public class WhileDemo{
public static void main(String[] args){
//输出1-4之间的整数
//定义变量,整数类型,循环的条件
int i =1;
while(i < 5){
System.out.println(i);
i ++;
}
}
}
do-while 语句
do-while语句和while语句功能类似,只不过do-while语句将循环条件放在了循环体的后面,也就是说,循环体会无条件地执行一次,然后再根据循环条件来决定是否继续执行。
public class DoWhileDemo{
public static void main(String[] args){
//输出1-4之间的整数
int i =1;
do{
System.out.println(i);
i ++;
}
while(i < 5); //循环条件
}
}
for 语句
for循环语句由循环体和循环的终止条件两部分组成。
for 循环语句:循环结构
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;(循环体)
}
/*
for 循环
编写格式:
for (初始化变量 ; 条件 ; 增量){
循环体
}
初始化变量:定义变量,作用,控制循环的次数
条件:当条件是true,执行循环体,条件是false,结束循环
增量:变量自增情况
*/
public class ForDemo{
public static void main(String[] args){
int sum = 0 ;
for(int i = 0; i <= 4;i ++){
sum = sum + i;
}
System.out.println(sum);
}
}
循环嵌套
循环嵌套是指在一个循环语句的循环体中再定义一个循环语句的结构。while 、do-while、for循环语句都可以进行嵌套,最常见的还是for 循环嵌套for 循环。
/*
*/
public class ForForDemo{
public static void main(String[] args){
int i, j; // 定义两个循环变量
for(int i =0; i <9; i++){ //外层循环,控制打印的行数
for(int j=0; j<i+1;j++){ //内层循环,控制'*'逐行增加
System.out.print(" * ");
}
System.out.print("\n");
}
}
}
跳转语句
跳转语句用于实现循环执行过程中的程序流程的跳转。
break语句 中断
在switch 条件语句和循环语句中都可以使用break语句,当它出现在switch语句中时,用来终止某个case 并跳出switch 结构;当它出现在循环语句中时,用来跳出循环语句,执行后面的代码。
switch语句
/*
break语句的作用:跳出当前case对应的语句
*/
public class SwitchDemo{
public static void main(String[] args){
int i = 4;
switch(i){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
default:
System.out.println("星期五");
break;
}
}
}
输出结果为 :星期四 ,说明当执行到case 4 时满足条件,执行break ,跳出整个switch 结构。
循环语句(单层循环)
/*
break 作用于循环中,终止循环
*/
public class BreakDemo{
public static void main(String[] args){
int i = 1;
while(true){
if(i == 3){
break; //当i自增到3,满足条件,终止当前循环
}else{
System.out.println(i);
}
i ++;
}
}
当break 语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,如果想使用break语句跳出外层循环就需要对外层循环添加标记。
public class BreakDemo02 {
public static void main(String[] args) {
int i, j; // 定义两个循环变量
//NO.1 标签,标记代码块,如果条件成立,则中断NO.1标记的代码块
NO.1: for (i = 1; i <= 9; i++) { // 外层循环
for (j = 1; j <= i; j++) { // 内层循环
if (i > 4) { // 判断i的值是否大于4
break NO.1; // 跳出外层循环
}
System.out.print("*"); // 打印*
}
System.out.print("\n"); // 换行
}
}
}
输出结果表示break 中断了外层循环,所以只打印了4行数据。
continue语句 继续
continue语句用在循环语句中,主要用来终止本次循环,执行下一个循环。
/*
对1~100内的奇数求和
break:当遇到偶数时,不进行累加操作,跳出本次循环,执行下一个数字的判断
*/
public class ContinueDemo{
public static void main(String[] args){
int sum = 0; // 定义变量sum,用于记住和
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) { // i是一个偶数,不累加
continue; // 结束本次循环
}
sum += i; // 实现sum和i的累加
}
System.out.println("sum = " + sum);
}
}
continue 语句出现在多层嵌套的循环语句体中时,他只能跳出内层循环,如果想跳出外层循环,可以通过标号(标签)指明要跳过的是哪一层循环。
public class ContinueDemo02 {
public static void main(String[] args) {
int i, j; // 定义两个循环变量
//NO.1 标签,标记代码块,如果条件成立,则中断NO.1标记的代码块
NO.1: for (i = 1; i <= 9; i++) { // 外层循环
for (j = 1; j <= i; j++) { // 内层循环
if (i > 4) { // 判断i的值是否大于4
continue NO.1; // 跳出外层循环
}
System.out.print("*"); // 打印*
}
System.out.print("\n"); // 换行
}
}
}
return语句 返回
return语句用于结束一个方法,跳转到上层调用的方法。
//语句格式
return expression;
return;
1
2
3
/*
要求:计算一个长方形的面积
*/
public class MethodDemo{
public static void main(String[] args){
int areas = getArea(3,5);
System.out.println("面积是:"+ areas);
}
public static int getArea(int w,int h){
//实现方法的功能主体
return w * h; //返回主程序,同时将w * h 的值带给主程序的areas 变量
}
public void set(int m,int n){
int z;
z=m*n
return; //本方法执行结束,返回主程序
}
}
注意:return语句通常用在方法体的最后,否则会产生编译错误,除非用在if-else 语句中。
break和continue的比较
单层循环中,break 跳出单层循环,continue 跳出当前循环,继续执行下一循环;
嵌套循环中,break 跳出当前循环,只是跳出当前的这一层循环,如果想要跳出所有循环,则需要逐层加入break; continue 和 break 很相似,如果想要跳出所有循环,需要逐层加入continue。