Java 重点语法

流程控制能让程序根据不同情况执行不同逻辑,方法用于封装代码实现复用,数组则方便我们存储和操作一组同类型数据。下面聚焦这些重点内容展开。

一、流程控制:分支与循环

(一)Switch 分支判断

switch 语句用于多分支选择,它会根据表达式的值,匹配对应的 case 分支执行。基本语法如下:

switch (表达式) {
    case 值 1:
        // 当表达式值等于值 1 时执行的代码
        break;
    case 值 2:
        // 当表达式值等于值 2 时执行的代码
        break;
    // 更多 case 分支
    default:
        // 当表达式值不匹配任何 case 时执行的代码
}

需要注意的是,switch 表达式的类型在 Java 5 及以前只能是 byteshortcharint;Java 7 开始支持 String 类型;Java 14 及以后还支持 enum(枚举)和 sealed 类型等。另外,break 用于跳出 switch 语句,如果没有 break,会发生 “穿透” 现象,即匹配到某个 case 后,会继续执行后面所有 case 的代码,直到遇到 break 或者 switch 结束。“穿透” 特性在某些场景下可以利用,比如多个 case 需要执行相同代码时。例如,根据星期几判断是否为工作日:

String day = "Monday";
switch (day) {
    case "Monday":
    case "Tuesday":
    case "Wednesday":
    case "Thursday":
    case "Friday":
        System.out.println(day + " 是工作日");
        break;
    case "Saturday":
    case "Sunday":
        System.out.println(day + " 是休息日");
        break;
    default:
        System.out.println("输入的星期不合法");
}

再比如,使用 enum 类型的 switch 示例:

enum Season { SPRING, SUMMER, AUTUMN, WINTER }
Season season = Season.SUMMER;
switch (season) {
    case SPRING:
        System.out.println("春天,万物复苏");
        break;
    case SUMMER:
        System.out.println("夏天,烈日炎炎");
        break;
    case AUTUMN:
        System.out.println("秋天,硕果累累");
        break;
    case WINTER:
        System.out.println("冬天,白雪皑皑");
        break;
}

(二)do - while 循环

do - while 循环的特点是先执行循环体,再判断循环条件,也就是说,循环体至少会执行一次。这和 while 循环(先判断条件,再执行循环体)有所不同,while 循环有可能一次都不执行循环体。do - while 适合那些无论如何都要先执行一次操作的场景,比如用户输入验证,至少要让用户输入一次,再判断输入是否合法。语法格式为:

do {
    // 循环体代码
} while (循环条件);

比如,实现一个简单的数字累加,至少执行一次累加操作:

int i = 0;
int sum = 0;
do {
    sum += i;
    i++;
} while (i <= 10);
System.out.println("1 到 10 的和为:" + sum); // 输出:55

再比如,用户输入密码,直到输入正确为止:

Scanner scanner = new Scanner(System.in);
String correctPassword = "123456";
String inputPassword;
do {
    System.out.print("请输入密码:");
    inputPassword = scanner.nextLine();
} while (!inputPassword.equals(correctPassword));
System.out.println("密码输入正确!");
scanner.close();

二、函数(方法):封装与复用

(一)static 关键字修饰方法

被 static 修饰的方法是静态方法,静态方法属于类,而不是类的实例(对象)。我们可以通过 “类名。静态方法名” 的方式直接调用静态方法,无需创建类的对象。静态方法通常用于定义工具方法,这些方法不依赖于对象的状态,只进行一些通用的操作。例如:

public class MathUtil {
    // 静态方法,计算两个数的和
    public static int add(int a, int b) {
        return a + b;
    }
    // 静态方法,计算一个数的平方
    public static int square(int num) {
        return num * num;
    }
}

// 在其他类中调用
public class Test {
    public static void main(String[] args) {
        // 直接通过类名调用静态方法 add
        int sumResult = MathUtil.add(3, 5);
        System.out.println("3 + 5 = " + sumResult); // 输出:3 + 5 = 8
        // 调用静态方法 square
        int squareResult = MathUtil.square(4);
        System.out.println("4 的平方是:" + squareResult); // 输出:4 的平方是:16
    }
}

需要注意的是,静态方法中不能直接访问非静态成员(非静态变量和非静态方法),因为非静态成员属于对象,而静态方法在类加载时就存在,可能此时还没有创建对象。

三、数组:批量处理同类型数据

(二)二维数组

二维数组可以理解为 “数组的数组”,用于存储表格型数据(比如矩阵)。它的声明、初始化方式有多种,这里介绍常见的两种:

  • 动态初始化
// 声明一个二维 int 数组,有 2 行,每行的列数后续确定
int[][] arr = new int[2][];
// 为第一行分配 3 列的空间
arr[0] = new int[3];
// 为第二行分配 2 列的空间
arr[1] = new int[2];
// 给数组元素赋值
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
  • 静态初始化
// 直接初始化一个二维数组,包含两行三列的数据
int[][] arr = {{1, 2, 3}, {4, 5, 6}};

访问二维数组的元素时,通过 “数组名 [行索引][列索引]” 的方式,比如 arr[0][1] 表示访问第一行第二列的元素(值为 2)。遍历二维数组通常需要使用嵌套循环,外层循环控制行,内层循环控制列,例如:

int[][] arr = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}

运行上述代码,输出结果为:

1 2 3 
4 5 6 

二维数组还可以用于更复杂的场景,比如存储学生的多门课程成绩,每行代表一个学生,每列代表一门课程的成绩,方便进行成绩的统计(如计算每个学生的总分、平均分,每门课程的平均分等)。例如:

// 学生成绩数组,每行是一个学生的语文、数学、英语成绩
int[][] scores = {{85, 90, 92}, {78, 88, 80}, {95, 92, 98}};
// 计算每个学生的总分
for (int i = 0; i < scores.length; i++) {
    int total = 0;
    for (int j = 0; j < scores[i].length; j++) {
        total += scores[i][j];
    }
    System.out.println("学生 " + (i + 1) + " 的总分是:" + total);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值