Java基础必学知识点 之 语言根基(二)

一、流程控制

代码默认是 从上到下逐行执行 的,但实际开发中我们需要判断、循环、跳转,这就需要 流程控制语句 。它主要分为三大类: 顺序结构、分支结构、循环结构

1. 顺序结构(默认)

最基础的执行方式,代码按照书写顺序一行一行跑,没有任何跳转。

public class OrderDemo {
    public static void main(String[] args) {
        System.out.println("第一步:执行");
        System.out.println("第二步:执行");
        System.out.println("第三步:执行");
    }
}

2. 分支结构:做选择

根据条件判断, 只执行符合条件的代码 ,常用ifif-elseswitch

(1)if 单分支

满足条件就执行,不满足就跳过。

语法

if (条件表达式) {
    满足条件时执行的代码;
}

示例:判断年龄是否成年。

int age = 20;
if (age >= 18) {
    System.out.println("已成年");
}
(2)if-else 双分支

二选一,满足条件执行if,不满足执行else。

示例:判断奇偶数。

int num = 7;
if (num % 2 == 0) {
    System.out.println("偶数");
} else {
    System.out.println("奇数");
}
(3)if-else if-else 多分支

多个条件判断,按顺序匹配,匹配到一个就执行对应代码。

示例:成绩评级。

int score = 85;
if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 70) {
    System.out.println("良好");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}
(4)switch 分支

switch 适合 固定值匹配(支持:byte/short/int/char、其包装类、String、枚举),不支持 longfloatdoubleboolean,比多分支 if 更简洁。

语法

switch (变量) {
    case1:
        执行代码;
        break; // 跳出switch,必须写!否则会穿透
    case2:
        执行代码;
        break;
    default: // 所有case都不匹配时执行
        执行代码;
}

示例:判断星期。

int week = 3;
switch (week) {
    case 1:
        System.out.println("周一");
        break;
    case 2:
        System.out.println("周二");
        break;
    case 3:
        System.out.println("周三");
        break;
    default:
        System.out.println("输入错误");
}

注意 :switch的case必须加break,否则会发生 case穿透 (继续执行下一个case代码)。

3. 循环结构:重复执行代码

需要重复做某件事时用循环,Java有三种循环:forwhiledo-while

(1)for 循环(最常用)

适合 已知循环次数 的场景,语法简洁。

语法

for (初始化变量; 条件判断; 更新变量) {
    循环体;
}

示例:打印1~10。

for (int i = 1; i <= 10; i++) {
    System.out.println(i);
}
(2)while 循环

适合未知循环次数,先判断条件,再执行循环。

语法

while (条件) {
    循环体;
    更新变量;
}

示例:计算1~5的和。

int sum = 0;
int i = 1;
while (i <= 5) {
    sum += i;
    i++;
}
System.out.println(sum); // 输出15
(3)do-while 循环

先执行一次循环体,再判断条件,至少执行一次。

示例

int i = 1;
do {
    System.out.println(i);
    i++;
} while (i <= 3);

4. 循环跳转:break 和 continue

  • break直接结束整个循环/switch

  • continue跳过当前一次循环,继续下一次

示例

// break:打印到3就停止
for (int i = 1; i <= 5; i++) {
    if (i == 4) break;
    System.out.println(i); // 输出1、2、3
}

// continue:跳过4,打印其他数字
for (int i = 1; i <= 5; i++) {
    if (i == 4) continue;
    System.out.println(i); // 输出1、2、3、5
}

二、数组:批量存储同类型数据

当你需要存 多个相同类型的数据 (比如全班同学的成绩、一组数字),用变量太麻烦,数组就是专门解决这个问题的!

1. 数组核心概念

  • 数组是 引用数据类型 ,存的是 同类型数据的集合
  • 数组 长度固定 ,一旦创建不能修改。
  • 数组有 索引(下标) ,从 0 开始(第一个元素是索引0,第二个是1,以此类推)。

2. 数组的定义方式

方式1:静态初始化(直接赋值)
// 格式:数据类型[] 数组名 = {元素1, 元素2, ...};
int[] scores = {90, 85, 95, 80};
String[] names = {"张三", "李四", "王五"};
方式2:动态初始化(指定长度,后赋值)

动态初始化时,数组元素会赋默认值:int → 0,double → 0.0,boolean → false,引用类型(如 String)→ null

// 格式:数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[3]; // 创建长度为3的int数组,默认值0
// 赋值
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;

3. 数组的使用

(1)访问元素:通过索引
int[] arr = {10, 20, 30};
System.out.println(arr[0]); // 输出10(第一个元素)
System.out.println(arr[2]); // 输出30(第三个元素)
(2)获取数组长度:数组名.length
int[] arr = {10, 20, 30};
System.out.println(arr.length); // 输出3
(3)遍历数组(循环打印所有元素)

for循环遍历 (最常用):

int[] arr = {10, 20, 30};
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

增强for循环 (简化遍历,不用索引):

for (int num : arr) {
    System.out.println(num);
}

4. 数组常见问题

  1. 索引越界异常 :访问了不存在的索引(如数组长度3,访问arr[3])。
  2. 空指针异常 :数组没有初始化就使用。

三、字符串:最常用的文本处理

字符串就是一串字符,用""包裹,Java中用String类表示,是开发中用得最多的类型!

1. 字符串的定义

方式1:直接赋值(推荐)
String str = "Hello Java";
方式2:通过new创建
String str = new String("Hello Java");

2. 字符串核心常用方法(必背!)

字符串方法超多,初学者先掌握这些高频方法,直接看示例就能用:

方法 作用 代码示例
length() 获取字符串长度 "abc".length() → 3
charAt(int index) 获取指定索引的字符 "abc".charAt(1) → ‘b’
equals(String) 判断字符串内容是否相等(必须用这个,不用== "abc".equals("abc") → true
toLowerCase() 转小写 "ABC".toLowerCase() → “abc”
toUpperCase() 转大写 "abc".toUpperCase() → “ABC”
contains(String) 判断是否包含指定字符串 "hello".contains("he") → true
replace(old, new) 替换字符串 "abc".replace("a", "x") → “xbc”
split(String) 分割字符串为数组 "a,b,c".split(",") → [“a”,“b”,“c”]
trim() 去除首尾空格 " abc ".trim() → “abc”

3. 字符串重点注意事项

  1. 字符串比较必须用equals(),不能用==

    • ==:比较的是内存地址
    • equals():比较的是真实内容
    String s1 = "abc";
    String s2 = new String("abc");
    System.out.println(s1 == s2); // false(地址不同)
    System.out.println(s1.equals(s2)); // true(内容相同)
    
  2. 字符串是不可变的

    String 对象是不可变的,底层(Java 8)用 final char [] 存储,任何修改操作(replace、substring 等)都不会改变原字符串,只会返回一个全新的字符串。

Java 9 之后,底层改为了 final byte[](加上一个编码标记 coder)

4. 字符串遍历示例

String str = "Java";
// 遍历每个字符
for (int i = 0; i < str.length(); i++) {
    char c = str.charAt(i);
    System.out.println(c);
}

总结

这篇博客完整学完了Java入门三大核心:

  1. 流程控制:用if/switch做选择,用for/while做循环,控制代码执行逻辑;
  2. 数组:批量存储同类型数据,通过索引访问,固定长度;
  3. 字符串:文本处理,核心是equals()比较、遍历、常用方法。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐