流程控制
顺序结构
程序运行的基本结构就是顺序结构,除非特别标明,否则就按照顺序一条一条指令的执行。也是最简单的一种算法结构。
顾名思义,顺序结构就是在程序运行过程中就是指令一条一条按顺序执行的结构。它是由若干个指令依次执行组成的。
public static void main(String[] args){
System.out.print("But when you know what to do, ");
System.out.println("don't ask about your future.");
System.out.print("但知行好事,");
System.out.println("莫要问前程。");
}
//按照顺序自上而下的执行!依次输出!
选择结构
if-else if-else
但我们需要判断一个命令是否需要执行时,我们就可以用if语句来表示:
if(布尔表达式){
//如果布尔表达式为真true将执行的语句
}
else{
//为假false将执行的语句
}
- if可以单独出现
- if elseif else 结构中,只要有一句判断为真,后面的都将不会判断,执行当前语句
- if else可以嵌套使用
switch多选择结构
当需要判断选择的情况较多时,就要用到switch。
- switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持 字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
- switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
- case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
- 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现 才会跳出 switch 语句。
- 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必 须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句,或者运行完接下来的所有语句,这种情况称为击穿,在实际操作中应该注意避免。
- switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何 位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分 支不需要 break 语句。
switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断 是否继续输出,或是跳出判断。
switch(sex){ //表达式可以是,Byte,Short,int,char,String
case "男" : //必须是字符串常量或字面值
System.out.println("男");
break;
case "女" :
System.out.println("女");
break;
default :
System.out.println("未知!");
}
循环结构
顺序结构和选择结构中的语句至多都只能被执行依次,如果同样的操作需要执行多次,就需要使用到循环结构。java有三种主要循环结构。
while循环
while(布尔表达式){ //表达式为true就循环,直到为false则终止循环。(先执行后判断)
//循环内容
}
do…while循环
do {
//代码语句
}while(布尔表达式); //先执行一次语句,表达式为真,则接着执行第二次,否则结束循环(先执行后判断)
for循环
for(初始化:布尔表达式:控制值的变化){ //与while类似,更加直白,提高可读性,最常用的循环结构
//代码语句
}
增强for循环
java5引入的一种主要用于数组或集合的增强型for循环
for(声明语句:表达式){
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
public class item{
public static void main(String[] args){
int [] nums={1,2,3};
for(int i:nums){
System.out.print(i+" ");
}
System.out.println();
String [] names = {"tom","jack","uzi","TheShy"};
for(String name:names){
System.out.print(name+" ");
}
}
}
break与continue
break
break 主要用于在循环语句或者switch语句中,用来跳出整个语句块。
break 跳出当前循环,并且继续执行该循环下面的语句
public class item{
public static void main(String[] args){
String [] names = {"TheShy","UZI","Rookie","xiaohu"};
int i;
for(i=0;i<names.length;i++){
if(names[i]=="UZI")break; //找到指定值,然后跳出
}
System.out.println("ad is "+names[i]);
}
}
continue
continue 适用于任何循环控制结构中。是让程序跳过当前循环,直接跳转到下一次循环的迭代。
public class item{ //输出100以内的偶数
public static void main(String[] args){
for(int i=0;i<100;i++){
if(i%2!=0) //如果不是偶数就跳过当前循环
continue;
System.out.print(i+",");
}
}
}
两者区别
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循 环中剩余的语句。(break语句也在switch语句中使用)
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行 下一次是否执行循环的判定。
带标签的continue与break(做了解)
break和continue通常只能中断当前循环,但若同标签使用,他们就会中断到存在标签的位置。
public static void main(String[] args) { //打印101-150之间所有的质数
int count = 0;
outer: for (int i = 101; i < 150; i ++) {
for (int j = 2; j < i / 2; j++) {
if (i % j == 0)
continue outer;
}
System.out.print(i+ " ");
}
}