四、java基础—流程控制

  1. 用户交互Scanner
  2. 分支结构
  3. 循环结构

1、用户交互Scanner

  • 可以通过Scanner类来获取用户的输入。java.util.Scanner是java5的新特性。
Scanner s = new Scanner(System.in)
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串
  • 读取前一般需要使用hasNext()与hasNextLine()方法来判断是否还有输入的数据
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);

System.out.println("使用next方式接收:");

//判断用户是否输入数据
if(scanner.hasNext()){
    //使用next方式接收
    String str = scanner.next();//程序会等待用户输入完毕
    System.out.println(str);
}
//关闭io流
scanner.close();
  • 凡是术语IO流的类如果不关闭就会一直占用资源,需要及时关闭。
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline进行接收");
if(scanner.hasNextLine()){
    String str = scanner.nextLine();
    System.out.println(str);
}
scanner.close();

【next()】:

  1. 一定要读取到有效字符后才可以结束输入
  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
  4. next()不能带有空格的字符串

【nextLine()】:

  1. 以Enter为结束符
  2. 可以获取空白
String str = scanner.nextLine();

2、 分支结构

  1. if单分支结构
  2. if-else双分支结构
  3. if-else if-else 多分支结构
  4. switch 多分支结构

if单分支结构

if(布尔表达式){
	语句块
}

四、java基础—流程控制_第1张图片

if-else双分支结构

if(布尔表达式){
	语句块 1
}else{
	语句块 2
}

四、java基础—流程控制_第2张图片

if-else if-else 多分支结构

if(布尔表达式 1) {
	语句块 1;
} else if(布尔表达式 2) {
	语句块 2;
}……
else if(布尔表达式 n){
	语句块 n;
} else {
	语句块 n+1;
}

四、java基础—流程控制_第3张图片

switch 多分支结构

​ 根据表达式的值从相匹配的 case 标签处开始执行,一直执行到 break语句处或者是 switch 语句的末尾。如果表达式的值与任一 case 值不匹配,则进入 default语句(如果存在 default 语句的情况)。

​ switch语句中的变量类型可以是:

  • byte、short、int或char
  • 从java1.7开始。支持String类型
  • case标签必须为字符串常量或字面常量

​ JDK1.5之前必须是整数(long 类型除外)或者枚举

switch (表达式) {
	case 值 1:
		语句序列 1;
		[break];
	case 值 2:
		语句序列 2;
		[break]; 
	… … … … …
	[default:
	默认语句;]
}
  • case穿透→break
  • switch匹配一个具体的值
  • 字符串的本质还是数字
  • 反编译:java→class→IDEA

四、java基础—流程控制_第4张图片
四、java基础—流程控制_第5张图片

3、循环结构

  1. 当型:while、for循环

    当布尔表达式条件为 true 时,反复执行某语句,当布尔表达式的值为 false 时才停止循环。

  2. 直到型:do-while循环

    先执行某语句, 再判断布尔表达式,如果为 true,再执行某语句,如此反复,直到布尔表达式条件为 false 时才停止循环

while 循环

while (布尔表达式) {
	循环体;
}

四、java基础—流程控制_第6张图片

  • 大多数情况会循环停止下来,少部分情况需要一直执行,eg:服务器的请求响应监听等
  • 循环条件如果一直为true回造成死循环

do-while循环

​ do-while 循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。do-while 循环的循环体至少执行一次。

do {
    循环体;
} while(布尔表达式) ;

四、java基础—流程控制_第7张图片

​ do-while循环和while循环的区别:

  • while先判断后执行,do-while先执行后判断
  • do-while 总是保证循环体至少会被执行一次

for循环

​ for循环执行次数在执行前就确定

for(chushihua1;布尔指;更新){
	//语句块
}
  • 最先执行初始化步骤设置循环变量的初值,可以声明一种类型,但可初始化一个或多个循环控制变量,可以是空语句
  • 然后检测布尔表达式的值。为true执行循环体;为false终止循环,执行后面的的语句,
  • 执行一次循环后,更新循环控制变量
  • 再次检测布尔表达式,循环执行以上步骤

四、java基础—流程控制_第8张图片

for(;;){}//死循环: 相当于 while(true)
//九九乘法表
for(int i =1;i<=9;i++){
	for (int j =1;j<=i;j++){
		System.out.print(j+"*"+i+"="+(i*j)+"\t");
	}
	System.out.println();
}
  • 在 for 语句的初始化部分声明的变量,其作用域为整个 for 循环体,不能在循环外部使用该变量

  • Java5中引入了一种主要用于数组的增强型for循环

for(声明语句:表达式){
}
  • 声明语句:声明更新的局部变量,改变了的类型必须和数组元素类型相匹配。作用域限定在循环语句块,其值与此时数组元素的值相等
  • 表达式:表达式是要访问的数组名或者是返回值为数组的方法
int[] nums = {1,2,3,4,5,6,7,8,9,0};
for(int x : nums){
	System.out.println(x);
}

嵌套循环

​ while、do-while 与 for循环可以任意嵌套多层

break 语句和 continue 语句

​ 在任何循环语句的主体部分,均可用 break 控制循环的流程。break 用于强行退出循环,不执行循环中剩余的语句。

​ continue :终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

  • continue 在 while,do-while 中,continue 语句立刻跳到循环首部,越过当前循环的其余部分。
  • continue在 for 循环中,跳到 for 循环的迭代因子部分

带标签的 break 语句和 continue 语句

​ “标签”是指后面跟一个冒号的标识符,例:“label:”。在循环体前设置标签→在其中嵌套另一个循环。由于break和continue关键字通常指终端当前循环,但若随标签使用,他们就会终端到存在标签的地方。

//输出105-150之间的质数
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+" ");
}

你可能感兴趣的:(Java,java,开发语言)