跟der包学习java_day3「运算符和表达式」

今日目标

掌握 Java 中常用的运算符(算术、赋值、比较、逻辑、自增自减)理解运算符的优先级和结合性学会用表达式实现简单的逻辑计算

一、算术运算符

用于基本的数学运算,和数学中的规则类似。

运算符 作用 示例 结果
+ 加法
5 + 3
8
减法
5 - 3
2
* 乘法
5 * 3
15
/ 除法
5 / 2
(整数)
2
/ 除法
5.0 / 2
(浮点)
2.5
% 取余数(模)
5 % 2
1
+ 字符串拼接
"年龄:" + 18
“年龄:18”
示例代码:


public class ArithmeticDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        
        // 基本运算
        System.out.println("a + b = " + (a + b)); // 13
        System.out.println("a - b = " + (a - b)); // 7
        System.out.println("a * b = " + (a * b)); // 30
        System.out.println("a / b = " + (a / b)); // 3(整数除法舍去小数)
        System.out.println("a % b = " + (a % b)); // 1(10除以3余1)
        
        // 浮点运算
        double c = 10.0;
        System.out.println("c / b = " + (c / b)); // 3.3333333333333335
        
        // 字符串拼接(+号遇到字符串会变成拼接)
        System.out.println("结果是:" + a + b); // "结果是:103"(先拼a,再拼b)
        System.out.println("结果是:" + (a + b)); // "结果是:13"(括号改变优先级)
    }
}
注意:

整数除法会自动舍弃小数部分(如 
7 / 3 = 2
),若需精确结果,至少有一个操作数是浮点型(如 
7.0 / 3
)。
+
 号同时有 “加法” 和 “字符串拼接” 功能,当两边有一个是字符串时,就会执行拼接。

二、赋值运算符

用于给变量赋值,最基本的是 
=
,还有复合赋值运算符(简化代码)。

运算符 作用 等价写法
= 基本赋值
a = 5;
+= 加后赋值
a += b;
 → 
a = a + b;
-= 减后赋值
a -= b;
 → 
a = a - b;
*= 乘后赋值
a *= b;
 → 
a = a * b;
/= 除后赋值
a /= b;
 → 
a = a / b;
%= 取余后赋值
a %= b;
 → 
a = a % b;
示例代码:


public class AssignmentDemo {
    public static void main(String[] args) {
        int a = 10;
        
        a += 5; // 等价于 a = a + 5 → a变为15
        System.out.println("a += 5 后:" + a); // 15
        
        a *= 2; // 等价于 a = a * 2 → a变为30
        System.out.println("a *= 2 后:" + a); // 30
        
        a %= 7; // 等价于 a = a % 7 → 30除以7余2 → a变为2
        System.out.println("a %= 7 后:" + a); // 2
    }
}

三、自增自减运算符(++ /–)

专门用于变量的 “加 1” 或 “减 1” 操作,有两种用法:前置
++a
)和后置
a++
)。

运算符 作用 前置(++a) 后置(a++)
++ 变量加 1 先加 1,再使用变量的值 先使用变量的值,再加 1
变量减 1 先减 1,再使用变量的值 先使用变量的值,再减 1
示例代码:


public class IncrementDemo {
    public static void main(String[] args) {
        int a = 5;
        int b = 5;
        
        // 自增示例
        int c = ++a; // 前置++:a先加1(a=6),再赋值给c → c=6
        int d = b++; // 后置++:先把b的值(5)给d,再b加1(b=6)
        
        System.out.println("a = " + a); // 6
        System.out.println("b = " + b); // 6
        System.out.println("c = " + c); // 6
        System.out.println("d = " + d); // 5
        
        // 自减示例
        int x = 3;
        int y = x--; // 后置--:y=3,x变为2
        System.out.println("x = " + x + ", y = " + y); // x=2, y=3
    }
}

注意:

自增自减运算符只能用于变量(如 
5++
 会报错)。实际开发中,尽量避免在复杂表达式中使用(如 
a = b++ + ++c
),可读性差。

四、比较运算符

用于比较两个值的关系,结果是 布尔值(true /false),常用于条件判断。

运算符 作用 示例 结果
== 等于
5 == 3
false
!= 不等于
5 != 3
true
> 大于
5 > 3
true
< 小于
5 < 3
false
>= 大于等于
5 >= 5
true
<= 小于等于
5 <= 3
false
示例代码:


public class ComparisonDemo {
    public static void main(String[] args) {
        int age = 18;
        System.out.println(age == 18); // true(年龄等于18)
        System.out.println(age > 20);  // false(年龄大于20?)
        System.out.println(age <= 18); // true(年龄小于等于18?)
        
        String name = "Java";
        System.out.println(name.equals("Java")); // 字符串比较用equals(),结果true
        // 注意:字符串不能用==比较内容(==比较的是地址),后面会详解
    }
}

注意:

比较运算符的结果一定是 
true
 或 
false
。比较字符串内容时,要用 
equals()
 方法(如 
str1.equals(str2)
),而不是 
==

==
 用于基本类型比较值,用于引用类型比较地址)。

五、逻辑运算符

用于连接多个布尔表达式,判断复合条件,结果也是布尔值。

运算符 名称 作用(当左边为… 时) 示例(a=true, b=false) 结果
&& 逻辑与 两边都为 true,结果才为 true;左边为 false 则右边不执行(短路)
a && b
false
|| 逻辑或 至少一边为 true,结果就为 true;左边为 true 则右边不执行(短路)
a || b
true
! 逻辑非 取反(true 变 false,false 变 true)
!a
false
示例代码:


public class LogicDemo {
    public static void main(String[] args) {
        boolean isStudent = true;
        int score = 85;
        
        // 逻辑与(&&):两个条件都满足才为true
        boolean canAward = isStudent && score >= 80; 
        System.out.println("能否获奖:" + canAward); // true(是学生且分数≥80)
        
        // 逻辑或(||):满足一个条件就为true
        boolean isPass = score >= 60 || isStudent; 
        System.out.println("是否通过:" + isPass); // true(分数≥60,所以右边不执行)
        
        // 逻辑非(!):取反
        boolean isNotStudent = !isStudent;
        System.out.println("不是学生:" + isNotStudent); // false
    }
}

关键:短路特性


&&
:如果左边为 
false
,右边的表达式不会执行(因为结果肯定是 
false
)。
||
:如果左边为 
true
,右边的表达式不会执行(因为结果肯定是 
true
)。

例如:



int x = 5;
boolean flag = (x > 10) && (x++ > 0); 
// 左边x>10为false,右边x++不执行,所以x仍为5
System.out.println(x); // 5

六、运算符优先级

当一个表达式中有多个运算符时,执行顺序遵循 “优先级”(和数学中的 “先乘除后加减” 类似)。

大致优先级(从高到低)

括号 
()
(可以改变优先级,建议多用)自增自减 
++
 
--
算术运算符(
*
 
/
 
%
 高于 
+
 
-
)比较运算符(
>
 
<
 
>=
 
<=
 高于 
==
 
!=
)逻辑运算符(
!
 高于 
&&

&&
 高于 
||
)赋值运算符(
=
 
+=
 等,优先级最低)

示例:


int result = 10 + 20 * 2; 
// 先算20*2=40,再算10+40=50 → result=50
 
int result2 = (10 + 20) * 2; 
// 括号改变优先级,先算10+20=30,再*2 → result2=60

建议:复杂表达式中尽量用括号明确顺序,提高可读性(不用死记优先级)。

七、练习

定义变量 
x=15

y=4
,计算并输出:


x + y * 3

(x + y) % 5

x / y
 和 
x % y
(思考:商和余数的关系是否满足 
x = y * 商 + 余数
?)

定义变量 
a=3
,执行 
int b = a++ * 2
 后,
a
 和 
b
 的值分别是多少?

用逻辑运算符判断:一个整数 
n
 是偶数且大于 10(输出 
true
 或 
false
)。

今日总结

算术运算符:
+ - * / %
,注意整数除法和字符串拼接。赋值运算符:
= += -=
 等,用于简化赋值操作。自增自减:
++
 
--
,区分前置(先变后用)和后置(先用后变)。比较运算符:结果为布尔值,字符串比较用 
equals()
。逻辑运算符:
&& || !
,注意短路特性。优先级:用括号明确顺序更清晰。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
啾的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容