Java基础快速入门: 运算符详解

本文纲要

  1. 运算符与表达式
  2. 算术运算符
    加减乘除
    除法特点:整数相除与浮点运算
    取模运算
  3. 字符的加操作
    char类型提升机制
    ASCII码表简要说明
  4. 字符串的加操作
    拼接规则
    运算顺序与优先级
  5. 案例:数值拆分
  6. 自增自减运算符
    单独使用
    参与操作(前置与后置的区别)
  7. 赋值运算符
    基本赋值
    扩展赋值(+=、-=等)
    扩展赋值隐含的强制类型转换
  8. 关系运算符(比较运算符)
  9. 逻辑运算符
    与(&)、或(|)、非(!)、异或(^)
    应用场景
  10. 短路逻辑运算符
    && 与 & 的区别
    || 与 | 的区别
  11. 三元运算符
    格式与执行流程
    求最大值/最小值
  12. 案例:三个和尚

运算符与表达式

运算符:对常量或变量进行操作的符号,如 +、-、*、/ 等。
表达式:用运算符将常量或变量连接起来,符合 Java 语法的式子。

例如:

int a = 10;
int b = 20;
int c = a + b;   // a + b 是一个算术表达式,+ 是算术运算符

算术运算符

1 ) 加减乘除

+、-、* 与数学中的运算规则一致,同样遵循“先乘除后加减”。

System.out.println(10 + 20);   // 30
System.out.println(10 - 20);   // -10
System.out.println(10 * 20);   // 200 

2 ) 除法特点

两个整数相除,结果只能得到整数,小数部分会被舍弃。若想得到带小数的结果,必须让运算中有浮点数参与。

System.out.println(10 / 2);    // 5 
System.out.println(10 / 3);    // 3 (小数部分被截断)
System.out.println(10 / 3.0);  // 3.3333333333333335
System.out.println(10.0 / 3);  // 3.3333333333333335

3 ) 取模运算(%)

取模运算符 % 用于取余数。

System.out.println(5 % 2);   // 5 ÷ 2 = 商2 余1,结果为1

字符的加操作

当 char 类型与 int 类型进行运算时,char 会先提升为 int,提升的过程是查找该字符在 ASCII 码表 中对应的数值。

请添加图片描述

常用 ASCII 值:

  • ‘a’ → 97
  • ‘A’ → 65
  • ‘0’ → 48
int a = 1;
char b = 'a';          // 'a' 对应 97
System.out.println(a + b);   // 1 + 97 = 98 

字符串的加操作

当 + 操作中出现字符串时,+ 就变成了字符串连接符,会将其他数据拼接成新字符串。

System.out.println("itheima" + 666);   // itheima666 
System.out.println("itheima" + true);  // itheimatrue 

运算顺序从左到右执行,注意:先遇到数字则先做算术运算,遇到字符串后开始拼接。

System.out.println(1 + 99 + "年大树");   // 100年大树
System.out.println("5+5=" + 5 + 5);     // 5+5=55
System.out.println("5+5=" + (5 + 5));   // 5+5=10

案例:数值拆分

需求:键盘录入一个三位数,将其拆分为个位、十位、百位并打印。

拆分公式:

  • 个位:数值 % 10
  • 十位:数值 / 10 % 10
  • 百位:数值 / 100

代码实现:

import java.util.Scanner;
 
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数:");
        int num = sc.nextInt();
 
        int ge  = num % 10;          // 个位
        int shi = num / 10 % 10;     // 十位
        int bai = num / 100;         // 百位
 
        System.out.println("整数" + num + "个位为:" + ge);
        System.out.println("整数" + num + "十位为:" + shi);
        System.out.println("整数" + num + "百位为:" + bai);
    }
}

自增自减运算符

++:变量自身加1
–:变量自身减1

1 ) 单独使用

单独使用时,++ 或 – 放在变量前或后,效果一样。

int a = 10;
a++;                 // 等价于 a = a + 1;
System.out.println(a);   // 11 

int b = 10;
--b;
System.out.println(b);   // 9

2 ) 参与操作使用

前置(++a):先自增/自减,再参与其他操作。
后置(a++):先使用原值参与操作,然后再自增/自减。

// 前置 ++ 
int a = 10;
int b = ++a;          // a先自增为11,再赋值给b
System.out.println(a);   // 11
System.out.println(b);   // 11
 
// 后置 ++
int aa = 10;
int bb = aa++;        // 先将aa原值10赋给bb,然后aa自增为11
System.out.println(aa);  // 11
System.out.println(bb);  // 10

注意:++ 和 – 只能操作变量,不能操作常量(如 10++ 非法)。

赋值运算符

1 ) 基本赋值运算符

= :将右侧的数据赋值给左侧的变量。

2 ) 扩展赋值运算符

+=、-=、*=、/=、%= 等,将左右两边的数据做对应运算后,再把结果赋值给左边。

int a = 10;
a += 20;            // 等价于 a = a + 20;
System.out.println(a);   // 30

3 ) 隐含的强制类型转换

扩展赋值运算符底层会自动添加强制类型转换,能避免一些因类型不匹配导致的编译错误。

short s = 1;
// s = s + 1;        // 编译错误:int 不能直接赋值给 short
s = (short)(s + 1);  // 需要手动强转
 
short ss = 1;
ss += 1;             // 等价于 ss = (short)(ss + 1); 自带强转,编译通过

4 ) 关系运算符(比较运算符)

用于比较两个数据的大小关系,结果为布尔类型 true 或 false。

运算符含义
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于
System.out.println(10 > 20);   // false 
System.out.println(10 >= 20);  // false
System.out.println(10 < 20);   // true 
System.out.println(10 <= 20);  // true
System.out.println(10 == 20);  // false
System.out.println(10 != 20);  // true

注意:不要把 == 误写为 =。

逻辑运算符

逻辑运算符用于整合多个比较表达式,连接 boolean 类型的值,最终得到 boolean 结果。

1 ) 基本逻辑运算符

运算符名称说明
&两边都为 true 结果才为 true,否则为 false(遇 false 则 false)
!取反,!true 为 false,!false 为 true
^异或两边相同为 false,不同为 true
// & 与
System.out.println(true & true);    // true
System.out.println(true & false);   // false
 
// | 或
System.out.println(true | false);   // true 
System.out.println(false | false);  // false
 
// ! 非
System.out.println(!true);          // false
 
// ^ 异或
System.out.println(true ^ false);   // true
System.out.println(true ^ true);    // false

2 ) 应用场景

例如键盘录入学生成绩,成绩在 90-100 之间输出“优秀”:

int score = 95;
if (score >= 90 & score <= 100) {
    System.out.println("优秀");
}

短路逻辑运算符

&&(短路与):与 & 作用相同,但若左边为 false,右边不再执行。
||(短路或):与 | 作用相同,但若左边为 true,右边不再执行。

int x = 3, y = 4;
// 使用 &&,左边 ++x > 4 为 false,右边 y-- 不会执行
System.out.println(++x > 4 && y-- < 5);  // false
System.out.println("x=" + x);            // 4
System.out.println("y=" + y);            // 4(y 未自减)

对比单 & 时,无论左边结果如何,右边都会执行。

三元运算符

格式:关系表达式 ? 表达式1 : 表达式2

执行流程:

  1. 计算关系表达式的值。
  2. 若为 true,取表达式1的值;若为 false,取表达式2的值。
int a = 10, b = 20;
int max = a > b ? a : b;   // 取较大值
System.out.println(max);    // 20 
 
int min = a > b ? b : a;   // 取较小值
System.out.println(min);    // 10

案例:三个和尚

需求:已知三个和尚的身高分别为 150、210、165,求最高身高。

思路:先用三元运算符比较前两个,得到较大值,再用该较大值与第三个比较,得到最终最大值。

public class Test {
    public static void main(String[] args) {
        int a = 150, b = 210, c = 165;
 
        int tempMax = a > b ? a : b;          // 前两个的较大值
        int max = tempMax > c ? tempMax : c;  // 与第三个比较
 
        System.out.println(max);               // 210
    }
}

进阶写法(可读性较差,不推荐):

int result = a > b ? (a > c ? a : c) : (b > c ? b : c);
System.out.println(result);

总结

本文详细讲解了 Java 中各类运算符的用法与注意事项,从基础的算术运算到逻辑判断,再到三元运算符的组合应用,为后续学习流程控制语句打下坚实基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值