Java 入门(运算符 与 逻辑控制)

Java 入门:运算符 与 逻辑控制(适合零基础新手)

这是 Java 学习的最早期核心内容之一。掌握运算符和流程控制后,你就能写出有判断、有循环、有选择的程序了(比如猜数字游戏、成绩分级、打印图案等)。

我们按从简单到复杂的顺序讲解,配大量代码示例和常见错误提醒。所有示例都用 JDK 8+(2026 年主流仍兼容)。

1. 运算符总览(分类记忆法)

类别符号示例优先级(从高到低)作用简述常见陷阱
算术+ – * / % ++ —数学计算/ 整数除法丢小数、自增自减前后置
关系(比较)> >= < <= == !=比较大小,返回 boolean== 不要用于对象(除字符串常量池外)
逻辑&&! ^
位运算&^ ~ << >> >>>二进制位操作(很少初学用)
赋值= += -= *= /= %= <<= >>= &== ^=最低赋值 + 复合运算
三元(条件)条件 ? 表达式1 : 表达式2简洁 if-else两边类型要兼容
其他instanceof、new、.、[]、()

口诀记忆优先级
先括号 → 算术(++ –) → 关系 → 逻辑(!) → 条件 → 赋值

2. 算术运算符(最常用)

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;

        System.out.println(a + b);   // 13
        System.out.println(a - b);   // 7
        System.out.println(a * b);   // 30
        System.out.println(a / b);   // 3   (整数除法,向下取整)
        System.out.println(a % b);   // 1   (余数)

        // 特殊:小数参与运算
        double c = 10.0 / 3;         // 3.3333333333333335
        System.out.println(c);

        // 自增自减(最容易错!)
        int x = 5;
        System.out.println(x++);     // 5   先用后加 → 输出5,x变成6
        System.out.println(++x);     // 7   先加后用 → x先+1变成7,再输出7

        // 经典面试题
        int i = 1;
        i = i++;                     // i最终还是1(坑!)
        System.out.println(i);       // 1

        // 正确理解:i++ 是先把旧值给临时变量,再自己+1
        // 所以 i = i++; 相当于 临时 = i;  i = i+1;  i = 临时;
    }
}

最常见错误

  • 以为 10 / 3 = 3.333 → 错!整数除法结果仍是整数
  • 自增自减在表达式中混用(i = i++ + ++i) → 结果不确定,千万别写!

3. 关系运算符 & 逻辑运算符(判断核心)

int age = 20;
boolean isAdult = age >= 18;          // true
boolean isTeen  = age > 12 &amp;&amp; age &lt; 20; // true

boolean hasMoney = true;
boolean canBuy   = isAdult &amp;&amp; hasMoney;   // true

// 短路与 &amp;&amp;
int num = 0;
if (num != 0 &amp;&amp; 10 / num > 2) {   // 不会报错!因为 num!=0 为false,后面的不执行
    System.out.println("不会除0");
}

// 短路或 ||
boolean isVIP = true;
if (isVIP || buySomething()) {    // 如果 isVIP=true,buySomething()根本不执行
    System.out.println("欢迎VIP");
}

短路 vs 非短路(非常重要!)

运算符名称特点使用场景建议
&&短路与左边false → 右边不执行99% 情况用这个
&逻辑与两边都执行(可能除0)极少用(位运算时才用)
短路或
逻辑或两边都执行
!逻辑非取反
^逻辑异或不同为true,相同为false判断两个布尔是否不同

4. if、if-else、if-else if-else(最基础分支)

int score = 85;

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 80) {
    System.out.println("良好");    // 85 → 良好
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

嵌套 if 示例(判断闰年)

int year = 2024;

if (year % 4 == 0) {
    if (year % 100 == 0) {
        if (year % 400 == 0) {
            System.out.println("闰年");
        } else {
            System.out.println("平年");
        }
    } else {
        System.out.println("闰年");
    }
} else {
    System.out.println("平年");
}

5. switch(多分支选择)

Java 8 前:只能用 int、char、byte、short、枚举、String(Java 7+ 支持 String)

Java 14+ 新特性(switch 表达式 + 箭头语法 → 强烈推荐)

// 传统写法
String day = "星期三";
switch (day) {
    case "星期一":
    case "星期二":
    case "星期三":
    case "星期四":
    case "星期五":
        System.out.println("工作日");
        break;
    case "星期六":
    case "星期日":
        System.out.println("休息日");
        break;
    default:
        System.out.println("输入错误");
}

// Java 14+ 推荐写法(更简洁,无需 break)
String type = switch (day) {
    case "星期一", "星期二", "星期三", "星期四", "星期五" -> "工作日";
    case "星期六", "星期日" -> "休息日";
    default -> "输入错误";
};
System.out.println(type);

6. 循环(for、while、do-while)

// 1. for(最常用,知道次数)
for (int i = 1; i &lt;= 5; i++) {
    System.out.println("第 " + i + " 次");
}

// 2. while(不知道次数,根据条件)
int count = 0;
while (count &lt; 3) {
    System.out.println("while 循环:" + count);
    count++;
}

// 3. do-while(至少执行一次)
int num = 10;
do {
    System.out.println("do-while:" + num);
    num++;
} while (num &lt; 10);   // 条件不成立,但仍执行一次

三种死循环写法(小心别写成这样)

// for(;;) { }
// while(true) { }
// do { } while(true);

continue & break(跳出/跳过)

for (int i = 1; i &lt;= 10; i++) {
    if (i == 5) continue;     // 跳过本次,i=5 不打印
    if (i == 8) break;         // 直接结束整个循环
    System.out.println(i);
}

7. 练习题(建议全部手写一遍)

  1. 判断一个数是奇数还是偶数
  2. 打印 1~100 内所有 3 的倍数
  3. 求 1+2+3+…+100 的和
  4. 九九乘法表(双重 for)
  5. 用 while 实现猜数字游戏(随机 1~100,提示大/小)
  6. 用 switch + 三元运算符判断成绩等级(优/良/中/及格/不及格)

掌握这些后,你已经能写出80% 的入门小程序了。
下一步推荐直接学习数组方法面向对象基础

你现在卡在哪一部分?想看某个知识点的更多练习题 / 代码纠错 / 视频推荐,还是想直接进入数组章节?告诉我,我继续陪你学!

文章已创建 5245

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部