2021.4.25 Java基础知识(二)——语句、流程相关

一、输入输出

1)输出

Java:输入输出、格式化输出 - ShineLe - 博客园

2)输入

一个从控制台读取一个String和一个整数的例子:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Input your name:");
        String name = scanner.nextLine();//读取一行输入并获取字符串
        System.out.print("Input your age:");
        int age = scanner.nextInt(); //读取一行输入并获取整数
        System.out.printf("Hi,%s,you are %d\n", name, age);
    }
}

①导入java.util.Scanner

②创建Scanner对象scanner,创建时传入参数System.in。直接使用System.in读取用户输入虽然可行,但是需要更复杂的代码,而通过Scanner就可以简化后续代码

③输入;scanner.nextLine()接收用户输入的字符串,scanner.nextInt()接收用户输入的整数。Scanner会自动转换数据类型,因此不用手动转换。

 

二、控制型语句

1、if

if (条件1){
    //执行语句1
} else if (条件2){
    //执行语句2
} else {
    //执行语句3
}

当执行语句只有一句时,不需要加花括号。但是,建议任何时候都加花括号。

对于相等的判断

①浮点值

由于浮点值的表示有精度限制,所以用==判断,可能会出错,正确的判断两个浮点值是否相等,应该由二者之差是否在某个精度范围内来决定

②引用类型

对引用类型用==判断,只有在二者指向相同地址时才会返回true

如果想对二者内容是否相等进行判断,可以使用equals方法判断。用法:

if(s1.equals(s2)){
    //...
}
//
if("String".equals(s2)){
  //...
}

2、switch

用法同C,一个switch只有一个大括号,每个case之后用缩进区分。

switch(表达式){
    case v1:
        语句1;
        break;
    case v2:
        语句2;
        break;
    default:
        语句n;
}

每个case之后都要有break,否则会穿透到下边的case中。

匹配字符串

switch语句还可以匹配字符串。字符串匹配时,是比较“内容相等”

switch(fruit){
    case "apple":
        语句1;
        break;
    case "banana":
        语句2;
        break;
    default:
        语句n;
        break;
}

更简洁的形式

从Java12开始,switch语句升级成为更简单的表达式语法,使用->,以取代break;防止原版switch因为漏写break而导致的穿透效应:

switch(表达式){
    case v1 -> {语句块1;}
    case v2 -> {语句块2;}
    default -> {语句块n;}
}

这种新语法在匹配之后,只执行匹配项对应的语句块中的语句,而不具有穿透效应。

使用新switch语法,不仅不需要break,还可以直接返回值,比如:

int n = switch(表达式){
    case v1 -> 1; //if 表达式==v1 return 1
    case v2 -> 2;
    default  -> 0;
}

yield

大多数时候,在switch表达式内部,我们会返回简单的值。

但是,如果需要复杂的语句,我们也可以写很多语句(在case之后的语句块中),放在{...}中,然后,用yield返回一个值作为switch语句的返回值:

yield:相当于一次returnreturn函数中的,yieldswitch专用)。

int n = switch (fruit) {
    case "apple" -> 1;
    case "banana" -> 2;
    default -> {
        int code = fruit.hashCode()
        yield code;
    }
};

3、while

while(条件表达式){
    //循环体
}

4、do while

do{
    循环体
} while (条件表达式) ;

不要忘记while之后的分号;

5、for

for(初始条件;结束检测条件;计数器){
    //循环体
}

for each:用于遍历数组中的数据

for (n:arr){
    //循环体
}

等价于Python中的:

for n in arr:
    //循环体

6、break、continue

跳出本次循环,之后break会终结整个循环,continue会继续执行循环的下一步。

posted @ 2021-04-25 21:58  ShineLe  阅读(27)  评论(0)    收藏  举报