20260714-笔记.md 16 KB

JavaSE 基础 — Day02 笔记

日期:2026-07-14
项目c260714
作者:WanJL


一、流程控制(if-else)

1. 程序的结构

程序的结构分为三种:

结构 说明
顺序结构 代码从左到右、从上到下依次执行
分支结构 为代码设定条件,满足条件执行 A,不满足执行 B
循环结构 重复执行某段代码(后续课程讲解)

2. if-else 分支结构

核心思想:告诉程序在什么情况下做什么事。

如果下雨,要打伞;否则就不打伞。

语法格式

if (布尔表达式) {
    // 条件为 true 时执行的代码
} else {
    // 条件为 false 时执行的代码
}

布尔表达式:运算结果为 boolean 类型值(truefalse)的表达式。

示例:判断一个整数是正数还是负数

int a = 15;
if (a > 0) {
    System.out.println("正数");
} else {
    System.out.println("负数");
}

完整代码 —— Demo01.java

/**
 * @author WanJl
 * @version 1.0
 * @title Demo01
 * @description 流程控制
 * @create 2026/7/14
 */
public class Demo01 {
    public static void main(String[] args) {
        /*
            逻辑
            流程控制就是告诉程序,要在什么情况下做什么事 的逻辑
            如果 下雨 要打伞 否则就不打伞

            程序的结构分为三种:
                1、 顺序结构  代码从左到右从上到下依次执行
                2、 分支结构 为代码设定条件,如果满足条件,就执行A,不满足就执行B
                        如果 (是否下雨){
                            要打伞
                        }否则{
                            不打伞
                        }
                        if(下雨==true){       括号里的 必须是布尔表达式(布尔表达式就是运算的结果是布尔类型值 true 或 false)
                            要打伞
                        }else{
                            不打伞
                        }
                 比如判断: 15 是 正数 还是负数
         */
        System.out.println("前面有n多代码...............");
        int a = 15;   // 定义一个整数类型的变量
        if (a > 0) {   // 判断 变量值是否大于0   运行结果是boolean类型值
            System.out.println("正数");
        } else {
            System.out.println("负数");
        }
        System.out.println("后面有n多代码...............");
        /*
            1、判断年龄age 是否大于30岁
            2、判断年龄 age2 是否成年
            3、判断分数 score 是否优秀 大于90分
         */
    }
}

3. 随堂练习(if 分支)

  1. 判断年龄 age 是否大于 30 岁
  2. 判断年龄 age2 是否成年(≥ 18 岁)
  3. 判断分数 score 是否优秀(大于 90 分)

二、Java 运算符

1. 运算符的分类

按操作数的数量分类

类型 说明 示例
一元运算符 只有一个操作数参与运算 ++--
二元运算符 有两个操作数参与运算 +-*/
三元运算符 有三个操作数参与运算 ? :(后面课程讲解)

按功能分类

类别 说明
算术运算符 ✅ 本次课程重点
赋值运算符 ✅ 本次课程重点
比较运算符 ✅ 本次课程重点
逻辑运算符 后续课程讲解
位运算符 后续课程讲解
三目运算符 后续课程讲解

2. 算术运算符

运算符 名称 示例 结果
+ 加号 5 + 5 10
- 减号 5 - 3 2
* 乘号 5 * 3 15
/ 除号 5 / 3 1(不是 1.666...)
% 取余/取模 5 % 3 2(5 / 3 = 1 余 2)
++ 自增 ++i / i++ 一元运算符
-- 自减 --i / i-- 一元运算符

基本运算示例

int a = 10, b = 3;
System.out.println("10+3=" + (a + b));   // 13
System.out.println("10-3=" + (a - b));   // 7
System.out.println("10*3=" + (a * b));   // 30
System.out.println("10/3=" + (a / b));   // 3
System.out.println("10%3=" + (a % b));   // 1

常见问题

① 整数除法截断

两个整数相除,结果为整数,会直接截断小数部分,只保留整数。

System.out.println(10 / 3);     // 3(截断小数)
System.out.println(10 / 3.0);   // 3.3333333333333335(有小数参与,结果为小数)
System.out.println(10.0 / 3);   // 3.3333333333333335
② 0 不能做除数

整数除法中,除数为 0 会抛出异常:

// System.out.println(3 / 0);    // ArithmeticException(算术异常,程序停止)

但浮点数除法中,除数为 0 有特殊结果:

System.out.println(3 / 0.0);     // Infinity(无穷大)
System.out.println(3 / -0.0);    // -Infinity(负无穷大)
System.out.println(0.0 / 0.0);   // NaN(Not a Number,非数字)
③ 取模运算 %
System.out.println(10 % 3);    // 1
System.out.println(-10 % 3);   // -1(结果的符号与被除数相同)

取模规则a % b 的结果符号与 a(被除数)的符号一致。

④ 自增 ++ 与自减 --
  • ++ 表示这个数增加 1,-- 表示这个数减少 1
  • 符号在前++i):先进行自增运算,再进行其他操作(如赋值)
  • 符号在后i++):先进行其他操作,再进行自增运算

    int i = 10;
    int j = ++i;   // i 先自增变为 11,再将 11 赋值给 j
    int k = i++;   // 先将 i(当前 11)赋值给 k,i 再自增变为 12
    
    System.out.println(j);   // 11
    System.out.println(k);   // 11
    System.out.println(i);   // 12
    

3. 赋值运算符

运算符 名称 含义 等价于
= 赋值 把右边的值赋给左边
+= 加后赋值 a = a + b a += b
-= 减后赋值 a = a - b a -= b
*= 乘后赋值 a = a * b a *= b
/= 除后赋值 a = a / b a /= b
%= 取余后赋值 a = a % b a %= b

示例

int x = 10;
x += 5;            // x = x + 5 → 15
System.out.println(x);

x *= 3;            // x = x * 3 → 45
System.out.println(x);

复合运算符隐含强制类型转换

byte a = 15;
// a = a + 6;      // ❌ 编译错误:a + 6 结果被提升为 int,赋值给 byte 需强制转换
a += 6;             // ✅ 复合赋值运算符隐含强制类型转换

重要:复合赋值运算符(+=-= 等)内部隐含了强制类型转换,不需要手动强转。

完整代码 —— Demo03.java

/**
 * @author WanJl
 * @version 1.0
 * @title Demo03
 * @description 赋值运算符
 * @create 2026/7/14
 */
public class Demo03 {
    public static void main(String[] args) {
        /*
            赋值运算符
            把=右边的值赋值给等号左边,比如 a=10
                =       赋值          a=b         把b的值赋值给a
                +=      加后赋值       a=a+b       把a+b的结果赋值给a
                -=      减后赋值       a=a-b       把a-b的结果赋值给a
                *=      乘后赋值       a=a*b       把a*b的结果赋值给a
                /=      除后赋值       a=a/b       把a/b的结果赋值给a
                %=      取余后赋值     a=a%b       把a%b的结果赋值给a
         */
        int x = 10;
        x += 5;
        System.out.println(x);   // 15
        x *= 3;
        System.out.println(x);   // 45  (x = x * 3)

        // 复合运算符隐含强制类型转换
        byte a = 15;
        // a = a + 6;  // 因为a+6的结果被提升为int类型,再赋值给byte类型的a需要强制类型转换
        a += 6;   // 复合赋值运算符 隐含就帮我们做了强制类型转换。
    }
}

4. 比较运算符

运算符 名称 示例 结果
> 大于 5 > 3 true
< 小于 5 < 3 false
== 等于 5 == 3 false
>= 大于等于 5 >= 3 true
<= 小于等于 5 <= 3 false
!= 不等于 5 != 3 true

注意:比较运算符的结果都是 boolean 类型(truefalse)。 判断相等使用 ==(双等号),不能写成 =(单等号是赋值)。

完整代码 —— Demo04.java

/**
 * @author WanJl
 * @version 1.0
 * @title Demo04
 * @description 比较运算符
 * @create 2026/7/14
 */
public class Demo04 {
    public static void main(String[] args) {
        /*
           >        大于          5>3     true
           <        小于          5<3     false
           ==       等于          5==3    false
           >=       大于等于       5>=3    true
           <=       小于等于       5<=3    false
           !=       不等于         5!=3    true
         */
    }
}

三、综合练习(Demo02)

结合 if-else 分支结构与算术运算符,完成以下练习:

练习 1:判断奇偶数

int i1 = 7;
if (i1 % 2 == 0) {
    System.out.println("偶数");
} else {
    System.out.println("奇数");
}

思路:奇数不能被 2 整除(% 2 == 1),偶数能被 2 整除(% 2 == 0)。

练习 2:判断倍数关系

int a1 = 10, b1 = 5;
if (a1 % b1 == 0) {
    System.out.println("是倍数");
} else {
    System.out.println("不是倍数");
}

思路a1 % b1 == 0 说明 a1 能被 b1 整除,即 a1b1 的倍数。

练习 3:判断正数、负数还是 0

int i2 = 10;
if (i2 > 0) {
    System.out.println("正数");
} else if (i2 < 0) {
    System.out.println("负数");
} else {
    System.out.println("0");
}

思路:使用 if - else if - else 进行多分支判断。

练习 4:分钟数转换

将总分钟数(如 130 分钟)转换为几小时几分钟,并判断是否超过 1 小时。

int time = 130;
int h = time / 60;     // 整除获取小时数
int m = time % 60;     // 取余获取剩余分钟数
System.out.println(h + "小时" + m + "分钟");
if (h > 1) {
    System.out.println("超过1小时");
} else {
    System.out.println("不超过1小时");
}

思路小时 = 总分钟 / 60(整除),剩余分钟 = 总分钟 % 60(取余)。


四、完整代码汇总

Demo01.java — 流程控制

/**
 * @author WanJl
 * @version 1.0
 * @title Demo01
 * @description 流程控制
 * @create 2026/7/14
 */
public class Demo01 {
    public static void main(String[] args) {
        System.out.println("前面有n多代码...............");
        int a = 15;
        if (a > 0) {
            System.out.println("正数");
        } else {
            System.out.println("负数");
        }
        System.out.println("后面有n多代码...............");
    }
}

Demo02.java — 算术运算符 + 综合练习

/**
 * @author WanJl
 * @version 1.0
 * @title Demo02
 * @description Java运算符
 * @create 2026/7/14
 */
public class Demo02 {
    public static void main(String[] args) {
        // 1. 算术运算符
        int a = 10, b = 3;
        System.out.println("10+3=" + (a + b));
        System.out.println("10-3=" + (a - b));
        System.out.println("10*3=" + (a * b));
        System.out.println("10/3=" + (a / b));
        System.out.println("10%3=" + (a % b));

        // 整数除法截断
        System.out.println(10 / 3);     // 3
        System.out.println(10 / 3.0);   // 3.3333...

        // 0 不能做除数
        System.out.println(3 / 0.0);    // Infinity
        System.out.println(3 / -0.0);   // -Infinity
        System.out.println(0.0 / 0.0);  // NaN

        // 取模运算
        System.out.println(10 % 3);     // 1
        System.out.println(-10 % 3);    // -1

        // 自增自减
        int i = 10;
        int j = ++i;   // 11
        int k = i++;   // 11(赋值后再自增)
        System.out.println(j);
        System.out.println(k);
        System.out.println(i);   // 12

        // 练习1:判断奇偶数
        int i1 = 7;
        if (i1 % 2 == 0) {
            System.out.println("偶数");
        } else {
            System.out.println("奇数");
        }

        // 练习2:判断倍数
        int a1 = 10, b1 = 5;
        if (a1 % b1 == 0) {
            System.out.println("是倍数");
        } else {
            System.out.println("不是倍数");
        }

        // 练习3:判断正数/负数/0
        int i2 = 10;
        if (i2 > 0) {
            System.out.println("正数");
        } else if (i2 < 0) {
            System.out.println("负数");
        } else {
            System.out.println("0");
        }

        // 练习4:分钟转换
        int time = 130;
        int h = time / 60;
        int m = time % 60;
        System.out.println(h + "小时" + m + "分钟");
        if (h > 1) {
            System.out.println("超过1小时");
        } else {
            System.out.println("不超过1小时");
        }
    }
}

Demo03.java — 赋值运算符

/**
 * @author WanJl
 * @version 1.0
 * @title Demo03
 * @description 赋值运算符
 * @create 2026/7/14
 */
public class Demo03 {
    public static void main(String[] args) {
        int x = 10;
        x += 5;
        System.out.println(x);   // 15
        x *= 3;
        System.out.println(x);   // 45

        // 复合运算符隐含强制类型转换
        byte a = 15;
        a += 6;   // 隐含强制类型转换
    }
}

Demo04.java — 比较运算符

/**
 * @author WanJl
 * @version 1.0
 * @title Demo04
 * @description 比较运算符
 * @create 2026/7/14
 */
public class Demo04 {
    public static void main(String[] args) {
        /*
           >        大于          5>3     true
           <        小于          5<3     false
           ==       等于          5==3    false
           >=       大于等于       5>=3    true
           <=       小于等于       5<=3    false
           !=       不等于         5!=3    true
         */
    }
}

五、随堂练习要点

  1. if-else 分支结构if (布尔表达式) { ... } else { ... }
  2. 算术运算符+-*/%++--
  3. 整数除法截断:两个整数相除结果直接截断小数,不会四舍五入
  4. 0 不能做除数:整数除 0 会抛异常,浮点数除 0 得 Infinity / NaN
  5. 取模运算% 获取余数,结果符号与被除数相同
  6. 自增 ++ / 自减 --:符号在前先运算,符号在后先赋值
  7. 赋值运算符=+=-=*=/=%=
  8. 复合赋值运算符隐含强制类型转换
  9. 比较运算符><==>=<=!=,结果都是 boolean 类型
  10. 条件判断中比较相等使用 ==,不要写成 =
  11. 掌握 if - else if - else 多分支结构
  12. 学会利用 % 取模运算判断奇偶、倍数关系
  13. 学会利用 / 整除和 % 取余进行单位换算(分钟 → 小时 + 分钟)

六、拓展阅读

概念 说明
布尔表达式 运算结果为 truefalse 的表达式
算术异常 ArithmeticException,整数除以 0 时抛出
Infinity 浮点数除 0 的结果,表示无穷大
NaN Not a Number,0.0 / 0.0 的结果
复合赋值运算符 +=-= 等,自带隐式强制类型转换