3-Java基础:流程控制

一、用户交互Scanner

java.util.Scanner 类用来获取用户得输入(Java5新特性)

基本语法:

Scanner s = new Scanner(System.in);

注1: 可以通过Scanner类的next()nextLine() 方法来获取输入的字符串,但在读取前一般需要使用 hasNext()hasNextLine() 判断是否还有输入的数据
2: 还能通过 hasNextInt - nextInt() 判断是否是整数,Float、Double…都行

https://www.oracle.com/java/technologies/javase-jdk11-doc-downloads.html
https://docs.oracle.com/en/java/javase/11/docs/api/index.html

Scanner对象:

  1. next()
  • 一定要读取到有效字符后才可以结束输入
  • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
  • 只有输入有效字符才将其后面输入的空白作为分隔符或者结束符
  • 所以 next()不能得到有空格的字符串
		//创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收: ");
        //判断用户有没有输入字符串
        //输入hello world ,输出 hello
        if(scanner.hasNext()){
            //使用next方式接受
            //程序会等待用户输入完毕
            String str = scanner.next();
            System.out.println("输入的内容为: "+ str);
        }
        //好习惯:关闭扫描器
        //凡是属于IO流的类如果不关闭会一直占用资源,所以用完要关闭
        scanner.close();
  1. nextLine()
  • 以回车Enter为结束符,所以会返回输入回车之前的所有字符
  • 可以获得空白
 		Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方式接收: ");
        //输入hello world ,输出 hello world
        if(scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println("输入的内容为: "+ str);
        }
        scanner.close();

Alt + Enter 默认变量

二、逻辑结构

2.1 顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则就按照从上到下顺序一句一句执行

2.2 选择结构

  • if 单选择结构
    语法:
 if(布尔表达式){
 //如果布尔表达式为true则进入并开始执行语句
  }
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入内容: ");
        String s = scanner.next();
        //equals 判断字符串受否相等
        if(s.equals("hello")){
            System.out.println(s);
        }
        System.out.println("End");
  • if 双选择结构
 if(布尔表达式){
 	//如果布尔表达式为true则进入并开始执行语句
  }else{
  	//如果尔表达式为false
  }
  • if 多选择结构
 if(布尔表达式1){
 	//如果布尔表达式1为true则进入并开始执行语句
  }else if(布尔表达式2){
  	//如果尔表达式1为false,而布尔表达式2为true
  }else if(布尔表达式3){
  	//如果尔表达式2为false,而布尔表达式3为true
  }else{
  	//如果尔表达式3为false,则进入并开始执行代码
  }
  • 嵌套的 if 结构
 if(布尔表达式1){
 	//如果布尔表达式1为true则进入并开始执行语句
 	if(布尔表达式2){
  	//如果布尔表达式2为true则进入并开始执行语句
  	}
  }
  • switch 多选择结构
    • switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
    • case 标签必须是字符串常量或字面量(byte、int 、short、char、String(JDK7新特性)
    • 注意 case穿透现象——解决:每写一个case增加break
 swicth(expression){
 	case value1:
 		//语句
 		break;//可选
 	case value2:
 		//语句
 		break;//可选
 	default://可选
 		//语句
  }

shift + Tab 取消缩进

附加:

  • 反编译(IDEA)【一般 java----class(字节码文件)】
  • 字符的本质还是数字——hashcode

Ctrl + Alt + Shift + s 得到项目结构

在这里插入图片描述在这里插入图片描述

IDEA 2022版本【不太清晰其中的奥秘】

在这里插入图片描述

2019版本【很好】

在这里插入图片描述

2.3 循环结构

  1. while循环
while(布尔表达式){
	//循环内容
}
  1. do…while循环
do{
	//代码语句
}while(布尔表达式)

注: while 和 do-while的区别:

  • while先判断后执行,而do-while先执行后判断;
  • do-while 总是保证循环体会被至少执行一次【主要差别】

3.for循环
支持迭代的一种通用结构,是最有效的、最灵活的循环结构

for(初始化;布尔表达式;更新){
	//代码语句
}

快捷语句:100.for

  • 首先,执行初始化步骤:可以声明一种类型,但可以初始化一个或多个循环控制变量,也可以是空语句
  • 然后,检测布尔表达式的值:如果为true,循环体被执行;如果为false,循环终止
  • 执行一次循环后,更新循环控制变量

4.增强for循环(JDK5新特性)

for(声明语句:表达式){
	//代码语句
}
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配
  • 表达式:要访问的数组名,或者返回值为数组的方法

2.4 break & continue

  • 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 + "\t");
        }
    }

版权声明:本文为qq_45022770原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。