![](https://i-blog.csdnimg.cn/blog_migrate/583aa23e2c1feed4a43b52b3a992a12a.jpeg)
一、Java运算符
运算符指明对操作数的运算方式
1、算术运算符
算术运算符 | 运算 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余(模) |
++ | 自增 |
- - | 自减 |
① 自增运算符++
(自减运算符照葫芦画瓢喽)
"栗子"
package javabasis;
public class Operator01 {
/**
* 自增运算符++
* 1、是单目运算符,即仅接受一个操作数
* 2、单独使用
* ++前、后++无区别,如:num++ 和 ++num 结果一样
* 3、混合使用
* ++前:变量先+1,再拿结果做赋值运算 【先加后用】
* 后++:先做赋值运算,再让变量+1 【先用后加】
*/
public static void main(String[] args) {
// 单独使用
int num1, num2;
num1 = num2 = 10;
++num1;
num2++;
System.out.println("num1 = " + num1); // num1 = 11
System.out.println("num2 = " + num2); // num2 = 11
System.out.println("-----------华丽的分割线-----------");
// 混合使用
int m, n;
m = n = 120;
int b = ++m; // 先加后用
System.out.println("m = " + m); // m = 121
System.out.println("b = " + b); // b = 121;
int c = n++; // 先用后加
System.out.println("n = " + n); // n = 121
System.out.println("c = " + c); // c = 120
}
}
运行 结果
拓展 "栗子"
package javaBasis;
public class Operator02 {
/* 想一想???
* 为什么的System.out.println(a++);和 System.out.println(++b);结果不同?
*/
public static void main(String[] args) {
int a = 10;
System.out.println(a++); // 10
System.out.println(a); // 11
System.out.println("-------------华丽的分割线----------------------");
int b = 10;
System.out.println(++b); // 11
System.out.println(b); // 11
}
}
运行 结果
分析 原因
2、关系运算符
关系/比较运算符 | 运算 |
---|---|
== | 等于 |
!= | 不等于 |
> | 等于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
注意点
①🔺 = 赋值(赋值运算符)
== 等于(关系运算符)
② 关系运算的结果都是布尔类型(true/false)
③ 运算符中两个符号之间不能有空格,否则报错
④ Java允许“==”和“!=”两种运算符用于任何数据类型。例如,判断两个数的值是否相等,判断对象或数组的实例是否相等,判断实例时比较的是两个对象在内存中的引用地址是否相等…
3、逻辑运算符
![](https://i-blog.csdnimg.cn/blog_migrate/7367731b735f0d23365926ec36b189dc.png)
注意点
① 逻辑运算要求两边都是布尔类型,并且最终结果也是布尔类型
②🔺 逻辑与(逻辑或) 和 短路与(短路或) 的区别
package javaBasis;
public class Operator03 {
public static void main(String[] args) {
// 相同点 :逻辑与& 和 短路与 的结果布尔类型相同
System.out.println(true & true); // true
System.out.println(true & false); // false
System.out.println(false & false); // false
System.out.println(true && true); // true
System.out.println(true && false); // false
System.out.println(false && false); // false
System.out.println("------------华丽的分割线1-------------");
/* 区别 :
* 逻辑与& ———— 左右两边都要执行 (不论第一个表达式结果是什么,第二个表达式一定会执行)
* 短路与&& ———— 当左边表达式为false时,右边表达式不执行,结果为false
*
* 逻辑或| ———— 左右两边都要执行
* 短路或|| ———— 当左边表达式为true时,右边表达式不执行,结果为true
*
* 效率方面 :短路与&&(短路或||) 比 逻辑与&(逻辑或|)效率高一些
* 但"存在即合理",在不同开发需求中,逻辑与(逻辑或) 和 短路与(短路或)是并存的
*/
int x = 5;
int y = 10;
System.out.println(x > y & x > y++); // false
System.out.println(y); // 11
System.out.println("------------华丽的分割线3-------------");
int n = 5;
int m = 10;
System.out.println(n > m && n > m++); // false
System.out.println(m); // 10
System.out.println("------------华丽的分割线4-------------");
int a = 8;
int b = 11;
System.out.println(a < b | a < b++); // true
System.out.println(b); // 11
System.out.println("------------华丽的分割线5-------------");
int c = 8;
int d = 11;
System.out.println(c < d || c < d++); // true
System.out.println(d); // 12
}
}
/* 运算结果 :
true
false
false
true
false
false
------------华丽的分割线1-------------
false
11
------------华丽的分割线2-------------
false
10
------------华丽的分割线3-------------
true
12
------------华丽的分割线4-------------
true
11
*/
4、赋值运算符
① =为基本赋值运算符 +=、-=、*=、/=、%=为扩展赋值运算符
package javaBasis;
public class Operator04 {
public static void main(String[] args) {
int n = 2;
n += 10; // n变量追加20
System.out.println(n); // 12
int m = 2;
m = m + 10;
System.out.println(m); // 12
// 思考???
// i += 10; 与 i = i + 10; 是否完全相同?
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/0f74c87cfa6cfdb2379f04db5ecd283f.png)
package javaBasis;
public class Operator05 {
public static void main(String[] args) {
byte b = 100; // 100不超出byte的取值范围,自动赋值给byte类型
// b = b + 10; // 混合运算,赋值右边都先转换成int型再运算,结果为int型,b为小容量byte型,编译报错!!!
b = (byte)(b + 10); // 强制类型转换
System.out.println(b); // 110
byte bb = 100;
bb += 10; // bb变量追加(累加) 10
System.out.println(bb); // 110
}
}
/* 回顾思考: i += 10; 与 i = i + 10; 是否完全相同?
* 答案是 不完全相同。
* 使用扩展赋值运算符(+=、-=、*=、/=、%=),永远不改变运算结果类型
* 如:
* byte b = 100;
* b += 10; 等同于 b = (byte)(b + 10);
*/
5、条件运算符
① 条件运算符:也称三目运算符、三元运算符
② 🔺语法结构:布尔表达式? 表达式1: 表达式2;
③ 🔺执行原理:布尔表达式为true,执行表达式1;布尔表达式为false,执行表达式2
6、字符串连接运算符
① + 运算符在Java中的两个作用
一是加法运算,+ 运算符两边都是数字类型,+做求和
二是字符串连接,+ 任意一边是字符串类型,+做字符串拼接
package javaBasis;
public class Operator06 {
public static void main(String[] args) {
int x = 10;
int y = 6;
// 这里+做加法运算 (求和)
System.out.println(x + y); // 16
// 当表达式中出现多个+时,遵循自左向右顺序执行
System.out.println(x + y + "123"); // 16123
// 若有小括号,小括号优先级更高,小括号内容优先运算
System.out.println(x + (y + "123")); // 106123
System.out.println("x + y = " + (x + y)); // x + y = 16
System.out.println("------------华丽的分割线------------");
int age = 12;
String name = "张三";
// 这里+做字符串拼接
System.out.println("年龄是" + age); // 年龄是12
System.out.println("欢迎" + name + "登录成功!"); // 欢迎张三登录成功!
}
}
7、位运算符
用于对二进制位的操作 (略)
🍅🍅🍅 以往文章 👇
001_Java语言发展历程
002_Java语言的八大特性
003_浅析JDK、JRE、JVM的区别和联系
004_JDK的下载安装与环境变量的配置
005_常用DOS命令
006_Java关键字、标识符、注释
007_Java八大基本数据类型
008_Java类型转换
010_Java流程控制语句