java 基础(四)运算和运算符

本文详细介绍了编程中的基本运算符,包括算数运算符、赋值运算符、关系运算符、逻辑运算符及三目运算符,并通过实例展示了它们的用法。

这篇,博主讲的是数学,没错,是数学。

数学中的最基本运算符有哪些?无非加减乘除,你可能会想到其他的运算,比如幂运算,开方运算,但无非是加减乘除四则运算演化而来,而乘除,又是加减法的快捷方式,减法相当于加一个数的相反数。所以计算机硬件设计中只有加法运算器,但随着数据的增大,计算难度也增大。虽然对于计算机来说太简单了,谁让她叫计算机呢,天生我材必有用啊,但我们码农不乐意啊所以早期的成语员便集成了各种运算符,包括算数运算符,赋值运算符,逻辑运算符等等,以及各种运算API,下面没开始慢慢道来

算数运算符

算术运算符主要用于进行基本的算术运算

算数运算符名称解释
+字面意思
-字面意思
*字面意思
/字面意思
%取模(取余)a%b    a/b的余数
++自增1自己本身加1
--自减1自己本身减1
package club.superbug.javabasic;

public class Operation {
	public static void main(String[] args) {
		//定义变量a
		int a = 9;
		//定义变量b
		int b = 4;
		//加法运算
		System.out.println("a + b = " + (a + b));
		//减法运算
		System.out.println("a - b = " + (a - b));
		//乘法运算
		System.out.println("a * b = " + (a * b));
		//除法运算
		System.out.println("a / b = " + (a / b));
		//取模运算
		System.out.println("a % b = " + (a % b));
	}
}

自增和自减时重点

运算符在变量前和变量后时不同的


		// 定义变量a
		int a = 9;
		// ++a
		System.out.println(a++); // 先使用a然后计算
		System.out.println(a);
		System.out.println("********华丽的分割线*******");

		// a复原初始化值
		a = 9;
		System.out.println(a);
		System.out.println("********华丽的分割线*******");
		
		// a++
		System.out.println(++a); // 先计算在使用啊
		System.out.println(a);

赋值运算符

赋值运算符是指为变量或常量指定数值的符号。如可以使用 “=” 将右边的表达式结果赋给左边的变量。

赋值运算符名称解释
=赋值右边的值付给左边的变量
+=加等于num+=a等价于num = num + a
-=减等于num-=a等价于num = num - a
*=乘等于num*=a等价于num = num * a
/=除等于num/=a等价于num = num / a
%=模等于num%=a等价于num = num % a
		// 定义变量a
		int a = 9;
		//定义变量num
		int num = 6;
		
		System.out.println("num+=a   "+(num+=a));
        num = 6;  //回归初值
        System.out.println("num-=a   "+(num-=a));
        num = 6;  //回归初值
        System.out.println("num*=a   "+(num*=a));
        num = 6;  //回归初值
        System.out.println("num/=a   "+(num/=a));
        num = 6;  //回归初值
        System.out.println("num%=a   "+(num%=a));
        num = 6;  //回归初值

关系运算符

关系运算符用于判断两个数据的大小,比较的结果是一个布尔值( true 或 false )

关系运算符名称
>大于
<小于
==等于
!=不等于
>=大于等于
<=小于等于
	System.out.println("2>3   " + (3 > 3));
		System.out.println("2<3   " + (3 < 2));
		System.out.println("2>=3  " + (3 >= 2));
		System.out.println("3<=3  " + (3 >= 3));
		System.out.println("2==3  " + (3 == 2));
		System.out.println("2!=3  " + (3 != 2));

ps:
       > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型和charl类型(char可以根据字符的编码转化为数值)
       == 、 != 两边的操作数既可以是数值类型,也可以是引用类型

逻辑运算符

逻辑运算符主要用于进行逻辑运算,条件与结果均为布尔值。

逻辑运算符名称描述
&&所有条件都为true时,结果为为true
||满足条件之一时,结果为true
条件为true时,结果为false:条件为false时,结果为true
^异或两个条件一真一假,结果为true,否则为false
逻辑运算符真值表    1==true    0==false
ab&&||!a^
111100
100101
010111
000010

三目运算符

语法形式:布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值

int a = 2;
		int b = 3;
		System.out.println(a > b ? 6 : 8);
		System.out.println(a < b ? 6 : 8);

 

 

 

<think>我们被要求详细解释Java中的位运算符基本运算符。根据引用内容,我们可以将回答分为两部分:基本运算符(包括算术运算符、关系运算符等)运算符(包括按位与、按位或、按位异或、按位取反、左移、右移、无符号右移)。首先,我们整理基本运算符部分:引用[3]提到了算术运算符(加减乘除模:+-*/%),以及逻辑运算符、位运算符、移位运算符等。然后,位运算符部分在引用[1][2][4][5]中有详细说明。我们按照以下结构组织回答:1.基本运算符(算术运算符、关系运算符、逻辑运算符等)2.位运算符(按位与、按位或、按位异或、按位取反、左移、右移、无符号右移)3.运算符的优先级(引用[4]提到位运算符的优先级低于算术运算符)注意:在适当的地方使用LaTeX格式表示数学表达式,如:$a+b$,$a\timesb$等。由于引用中提供了位运算符的详细规则例子,我们将结合这些例子进行解释。同时,根据要求,在回答末尾生成相关问题。开始编写回答:</think>### Java 运算符详解:基本运算符与位运算符 #### 一、基本运算符 基本运算符用于执行数学运算逻辑判断,优先级高于位运算符[^4]。 ##### 1. 算术运算符 | 运算符 | 名称 | 示例 | 数学表达式 | |--------|--------|-----------------|------------------| | `+` | 加法 | `a + b` | $a + b$ | | `-` | 减法 | `a - b` | $a - b$ | | `*` | 乘法 | `a * b` | $a \times b$ | | `/` | 除法 | `a / b` | $\frac{a}{b}$ | | `%` | 取模 | `a % b` | $a \mod b$ | | `++` | 自增 | `a++` 或 `++a` | $a = a + 1$ | | `--` | 自减 | `a--` 或 `--a` | $a = a - 1$ | **示例**: ```java int x = 10, y = 3; System.out.println(x + y); // 13 System.out.println(x / y); // 3 (整数除法) System.out.println(x % y); // 1 (余数) ``` ##### 2. 关系运算符 | 运算符 | 名称 | 示例 | 数学表达式 | |--------|------------|-------------|------------| | `==` | 等于 | `a == b` | $a = b$ | | `!=` | 不等于 | `a != b` | $a \neq b$ | | `>` | 大于 | `a > b` | $a > b$ | | `<` | 小于 | `a < b` | $a < b$ | | `>=` | 大于等于 | `a >= b` | $a \geq b$ | | `<=` | 小于等于 | `a <= b` | $a \leq b$ | ##### 3. 逻辑运算符 | 运算符 | 名称 | 示例 | 逻辑表达式 | |--------|--------|---------------|----------------| | `&&` | 逻辑与 | `a && b` | $a \land b$ | | `||` | 逻辑或 | `a || b` | $a \lor b$ | | `!` | 逻辑非 | `!a` | $\neg a$ | --- #### 二、位运算符运算符直接操作二进制位,适用于底层优化高效计算[^1][^2]。 ##### 1. 按位运算 | 运算符 | 名称 | 规则说明 | 示例(二进制) | |--------|--------|-----------------------------------|------------------------------------| | `&` | 与 | 两操作数对应位均为1时结果为1 | `1100 & 1010 = 1000` | | `|` | 或 | 两操作数对应位有1时结果为1 | `1100 | 1010 = 1110` | | `^` | 异或 | 两操作数对应位不同时结果为1 | `1100 ^ 1010 = 0110` | | `~` | 取反 | 单操作数,所有位取反 | `~1100 = 0011`(32位实际为`...11110011`) | **内存操作原理**: ```java int a = 12; // 二进制: 1100 int b = 10; // 二进制: 1010 int c = a & b; // 结果: 1000 (十进制8) ``` ##### 2. 移位运算 | 运算符 | 名称 | 规则说明 | 数学等效 | |--------|--------------|-----------------------------------------------|------------------------| | `<<` | 左移 | 低位补0,高位丢弃 | $a \times 2^n$ | | `>>` | 算术右移 | 高位补符号位(正数补0,负数补1) | $\lfloor a / 2^n \rfloor$ | | `>>>` | 无符号右移 | 高位补0(负数右移后变正数) | 无直接数学等效 | **示例**: ```java int num = 20; // 二进制: 00010100 int leftShift = num << 2; // 01010000 → 80 (20×4) int rightShift = num >> 2; // 00000101 → 5 (20÷4) ``` --- #### 三、运算符优先级 从高到低排序(部分常见运算符): 1. `()` 括号 2. `++` `--` 自增/自减 3. `*` `/` `%` 乘/除/模 4. `+` `-` 加/减 5. `<<` `>>` `>>>` 移位 6. `<` `>` `<=` `>=` 关系比较 7. `==` `!=` 相等判断 8. `&` 按位与 9. `^` 按位异或 10. `|` 按位或 11. `&&` 逻辑与 12. `||` 逻辑或 > **关键规则**:算术运算符 > 移位运算符 > 位运算符 > 逻辑运算符[^4] --- #### 、应用场景与性能对比 | 场景 | 推荐运算符 | 优势说明 | |---------------------|----------------|-----------------------------------| | 奇偶判断 | `a & 1` | 比 `a % 2 == 0` 快约20%[^1] | | 乘除2的幂次 | `<<` `>>` | 比 `*` `/` 快10倍以上 | | 交换变量(无临时变量)| `a ^= b; b ^= a; a ^= b;` | 减少内存访问 | | 权限控制 | `|` 组合 `&` 校验 | 高效存储多状态标志 | **示例:高效计算2的n次方** ```java int power = 1 << n; // 等效于 Math.pow(2, n),但无函数调用开销 ``` --- #### 五、注意事项 1. **整数溢出** 移位操作可能溢出:`1 << 31` 在int类型中结果为负数 2. **符号处理** 右移 `>>` 保持符号,无符号右移 `>>>` 会改变符号 3. **类型转换** 位运算前操作数会提升为int:`byte b = 0x0F; b & 0xFF` 结果为int类型 4. **短路特性** 逻辑运算符 `&&` `||` 有短路行为,位运算符 `&` `|` 无短路 --- ### 总结对比 | 特性 | 基本运算符 | 位运算符 | |--------------|--------------------------------|------------------------------| | **操作对象** | 变量值 | 二进制位 | | **性能** | 较慢(需类型检查) | 极快(直接CPU指令) | | **用途** | 常规计算、逻辑判断 | 底层优化、状态压缩、加密算法 | | **可读性** | 高 | 低(需注释说明) | > 实际开发中优先使用基本运算符,在性能关键路径(如算法核心循环)可考虑位运算优化[^2][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值