3 运算符与表达式
运算符:对字面量或者变量进行操作的符号
表达式:用运算符把字面量或者变量连接起来符合java语法的式子就可以称作表达式
不同运算符连接的表达式体现的是不同类型的表达式
int a = 10;
int b = 20;
int c = a + b;
+:运算符,并且是算术运算符
a+b:是表达式,由于+是算术运算符,所以表达式叫算术表达式
算术运算符
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 :整数相除,结果只能得到整数,要想得到带有小数的结果,就需要有小数参与运算 |
% | 取余:作用是用来取余数的,如果操作数都是整数,结果是整数,操作数有一个是小数,结果都是小数 |
%有什么用?
%目前能想到的场景,可以进行奇数偶数的判断,任何一个数%2的结果,不是0就是1
public class ArithmeticOperator {public static void main(String[] args) {System.out.println(5/2); // 2 整数相除,结果只能得到整数System.out.println(5/2.0); //2.5 要想得到带有小数的结果,就需要有小数参与运算System.out.println(5.0/2.0); //2.5 要想得到带有小数的结果,就需要有小数参与运算System.out.println(5.0/2); //2.5 要想得到带有小数的结果,就需要有小数参与运算System.out.println("_________________________________________");System.out.println(5%2); //1System.out.println(5%2.0); //1.0System.out.println(5.0%2.0); //1.0System.out.println(5.0%2); //1.0}
}
需求:键盘录入一个三位数,将其拆分为个位,十位,百位,打印在后台
个位的计算:数值%10123除以10(商12,余数为3) 十位的计算:数值/10%10123除以10(商12,余数为3,整数相除只能等于整数)12除以10(商1,余数为2) 百位的计算:数值/10/10%10123除以10(商12,余数为3,整数相除只能等于整数)12除以10(商1,余数为2)1除以10(商0,余数为1) 千位的计算:数值/10/10/10%10
import java.util.Scanner;
public class ArithmeticOperatorTest {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/10/10%10;System.out.println("个位数:" + ge);System.out.println("十位数:" + shi);System.out.println("百位数:" + bai);}
}
自增自减运算符
++ :让变量自身的值+1
-- :让变量自身的值-1
只能操作变量
使用方式有两种
1.单独使用 一句代码中,只做++ 或者 --,单独使用时,++ 或者 -- 在变量的前面还是后面没有区别
2.参加运算
如果放在变量的前面,先对变量进行+1或者-1,再拿变量的值进行运算,当++ 或者--,在前面时,先运算再赋值
如果放在变量的后面,先拿变量的值进行运算,再对变量的值进行 +1或者-1,当++或者--,在后面是,先赋值在运算
public class AutodecrementOperator {public static void main(String[] args) {int x = 10;int y = x++; // y = 10;x=11int z = ++y;// y =11;z=11System.out.println("x的值:" + x);System.out.println("y的值: " + y);System.out.println("z的值:" + z);System.out.println("______________________________");int a = 3;// 4 4 5*10int b = (++a) + (a++) +(a*10);System.out.println("a的值" + a);//5System.out.println("b的值" + b);//58}
}
字符串的拼接
+ 当加号操作当中,遇到了字符串,这时+号就是字符串连接符,而不是算术运算符
赋值运算符
赋值运算符是编程中用于给变量赋值的操作符,主要包括以下几种:
=
:基本赋值运算符
将右边的值赋给左边的变量
示例:a = 10;
表示将整数值10赋值给变量a+=
:加法赋值运算符
执行步骤:- 先计算左边变量和右边值的和
- 然后将结果赋给左边的变量
等价于:a = a + b
示例:a += 5;
相当于a = a + 5;
-=
:减法赋值运算符
执行步骤:- 先计算左边变量减去右边值的差
- 然后将结果赋给左边的变量
等价于:a = a - b
示例:balance -= withdrawal;
可用于银行账户扣款场景
*=
:乘法赋值运算符
执行步骤:- 先计算左边变量和右边值的乘积
- 然后将结果赋给左边的变量
等价于:a = a * b
示例:price *= 1.1;
可用于价格上调10%的计算
/=
:除法赋值运算符
执行步骤:- 先计算左边变量除以右边值的商
- 然后将结果赋给左边的变量
等价于:a = a / b
示例:average /= count;
常用于计算平均值
%=
:取模赋值运算符
执行步骤:- 先计算左边变量除以右边值的余数
- 然后将结果赋给左边的变量
等价于:a = a % b
示例:seconds %= 60;
可用于将总秒数转换为分钟和秒数
应用场景:
- 游戏开发中角色属性的实时更新
- 金融计算中的累计利息计算
- 科学计算中的迭代运算
- 数据处理中的聚合统计
注意事项:
- 运算符左右两边需要有明确的值或变量
- 除法和取模运算时右边值不能为0
- 复合赋值运算符比简单赋值运算符执行效率更高
关系运算符
关系运算符是编程中用于比较两个值的基本运算符,这些运算符的运算结果都是布尔类型(boolean),即只能返回true或false。以下是各种关系运算符的详细说明:
相等运算符(==): 用于判断两个操作数的值是否相等。例如:
- 5 == 5 返回true
- 3 == 5 返回false
- "hello" == "hello" 返回true 注意:在比较字符串时,实际上是比较字符串的内容而非对象引用
不等运算符(!=): 用于判断两个操作数的值是否不相等。例如:
- 5 != 3 返回true
- 5 != 5 返回false
- "abc" != "def" 返回true
大于运算符(>): 用于判断左操作数是否大于右操作数。例如:
- 10 > 5 返回true
- 5 > 10 返回false
- 5 > 5 返回false
大于等于运算符(>=): 用于判断左操作数是否大于或等于右操作数。例如:
- 10 >= 5 返回true
- 5 >= 10 返回false
- 5 >= 5 返回true
小于运算符(<): 用于判断左操作数是否小于右操作数。例如:
- 3 < 5 返回true
- 5 < 3 返回false
- 5 < 5 返回false
小于等于运算符(<=): 用于判断左操作数是否小于或等于右操作数。例如:
- 3 <= 5 返回true
- 5 <= 3 返回false
- 5 <= 5 返回true
逻辑运算符
在Java编程中,逻辑运算符是用于连接布尔类型的表达式或值的重要工具。它们可以将多个条件组合成一个整体逻辑表达式,从而构建更复杂的判断条件。以下是Java中主要的逻辑运算符及其详细说明:
逻辑与(&):
- 表示"并且"的关系
- 运算规则:遇false则false
- 特点:没有短路效果,无论左边表达式的结果是true还是false,右边表达式都会执行
- 示例:
(a > 5) & (b < 10)
只有当a大于5且b小于10时,整个表达式才为true
逻辑或(|):
- 表示"或者"的关系
- 运算规则:遇true则true
- 特点:没有短路效果,无论左边表达式的结果是true还是false,右边表达式都会执行
- 示例:
(x == 0) | (y == 0)
只要x等于0或者y等于0,整个表达式就为true
逻辑非(!):
- 表示"取反"操作
- 一元运算符,只需要一个操作数
- 示例:
!(age < 18)
等同于判断age是否大于等于18
逻辑异或(^):
- 表示"相同为false,不同为true"
- 当两个操作数相同时返回false,不同时返回true
- 示例:
(a > b) ^ (c > d)
当两个比较结果相同时返回false,不同时返回true
短路与(&&):
- 表示"并且"的关系
- 具有短路效果:当左边表达式为false时,右边表达式不会执行
- 效率更高,是实际开发中最常用的与运算
- 示例:
(user != null) && (user.getName().equals("Admin"))
可以避免NullPointerException
短路或(||):
- 表示"或者"的关系
- 具有短路效果:当左边表达式为true时,右边表达式不会执行
- 效率更高,是实际开发中最常用的或运算
- 示例:
(score >= 90) || (specialTalent == true)
如果分数已经大于等于90,就不会检查特殊才能
在实际编程中,短路运算符(&&和||)比非短路运算符(&和|)更常用,因为它们可以提高程序效率并避免不必要的计算。特别是在可能引发异常的判断中(如检查对象是否为null后再调用其方法),使用短路运算符可以避免程序崩溃。
三元运算符(三目运算符 )
基本语法格式
判断条件 ? 值1 : 值2;
执行流程说明
条件评估阶段:
- 首先计算判断条件的值
- 这个条件可以是任何能返回布尔值的表达式(如比较运算、逻辑运算等)
结果选择阶段:
- 如果条件评估结果为
true
:- 整个表达式将返回
值1
值2
部分不会被执行
- 整个表达式将返回
- 如果条件评估结果为
false
:- 整个表达式将返回
值2
值1
部分不会被执行
- 整个表达式将返回
- 如果条件评估结果为
实际应用示例
// 简单示例
let age = 20;
let status = (age >= 18) ? "成年人" : "未成年人";// 嵌套使用示例
let score = 85;
let grade = (score >= 90) ? "A" : (score >= 80) ? "B" : (score >= 70) ? "C" : "D";
注意事项
- 该运算符是JavaScript中唯一需要三个操作数的运算符
- 表达式中的
值1
和值2
可以是任意类型的值或表达式 - 虽然可以嵌套使用,但过度嵌套会降低代码可读性