运算符
一、基本的算术运算符
符号 | 作用 | 说明 |
---|
+ | 加 | 与小学加法同理。 例如:1 + 1 = 2。 int a = 10; int b = 20; int rs = a + b; // rs = 30 | - | 减法 | 与小学减法同理。 例如:2 - 1 = 1。 int a = 20; int b = 15; int rs = a - b; // rs = 5 | * | 乘 | 与小学乘法同理。 例如:3 * 5 = 15。 int a = 3; int b = 5; int rs = a * b; // rs = 15; | / | 除 | 与“÷” 相同(但是注意:在Java中两个整数相除结果还是整数)。 例如:15 / 5 = 3; int a = 15; int b = 5; int rs = a / b; //rs = 3; | % | 取余 | 获取的是两个数据做除法的余数 例如:16 % 5 = 1(16 / 5 = 3 余数:1) int a = 16; int b = 5; int rs = a % b; // rs = 1 |
package com.app.operator;
public class OperatorDemo1 {
public static void main(String[] args) {
int a = 10;
int b = 4;
int addUp = a + b;
System.out.print("a + b = ");
System.out.println(addUp);
int subtract = a - b;
System.out.print("a - b = ");
System.out.println(subtract);
int multiply = a * b;
System.out.print("a * b = ");
System.out.println(multiply);
int divide = a / b;
double divide2 = a * 1.0 / b;
double divide3 = a / b * 1.0;
System.out.print("int类型: a / b = ");
System.out.println(divide);
System.out.print("double类型:a * 1.0 / b = ");
System.out.println(divide2);
System.out.print("double类型:a / b * 1.0 = ");
System.out.println(divide3);
int remainder = a % b;
System.out.print("a % b = ");
System.out.println(remainder);
}
}
输出结果:
a + b = 14
a - b = 6
a * b = 40
int类型: a / b = 2
double类型:a * 1.0 / b = 2.5
double类型:a / b * 1.0 = 2.0
a % b = 2
二、案例:数值拆分
需求:一个三位数,将其拆分为个位、十位、百位后,打印在控制台
例:
请输入整数:
123
整数123的个位为:3
整数123的十位为:2
整数123的百位为:1
package com.app.operator;
public class OperatorTest2 {
public static void main(String[] args) {
int number = 678;
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number / 100;
System.out.print("整数678的个位为:");
System.out.println(ge);
System.out.print("整数678的十位为:");
System.out.println(shi);
System.out.print("整数678的百位为:");
System.out.println(bai);
}
}
输出结果:
整数678的个位为:8
整数678的十位为:7
整数678的百位为:6
三、“+” 做连接符
- “+” 符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串。
package com.app.operator;
public class OperatorDemo3 {
public static void main(String[] args) {
int a = 5;
System.out.println("三国五虎上将有" + a + "个人");
System.out.println("张飞和关羽有" + 'a' + "个兄弟");
System.out.println(a + 'A');
System.out.println("acd" + a + 'A');
System.out.println(10 + "go" + 5);
System.out.println(a + "" + 'A');
System.out.println(a + 'A' + "个张飞");
System.out.println("关羽有个" + a + 'A');
System.out.println("关羽有" + ('A' - a) + "个兄弟");
}
}
输出结果:
三国五虎上将有5个人
张飞和关羽有a个兄弟
70
acd5A
10go5
5A
70个张飞
关羽有个5A
关羽有60个兄弟
四、自增自减运算符
符号 | 作用 | 说明 |
---|
++ | 自增 | 变量自身的值加1 | – | 自减 | 变量自身的值减1 |
注意
-
++ 和 – 既可以放在变量的后边,也可以放在变量的前边 -
++、-- 只能操作变量,不能操作字面量的
-
自增、自减运用场景,举例:抖音短视频双击红心功能 例如: package com.app.operator;
public class OperatorDemo4 {
public static void main(String[] args) {
int love = 0;
++love;
System.out.println(love);
--love;
System.out.println(love);
}
}
输出结果:
1
0
自增自减的使用注意事项
五、案例:自增、自减拓展案例(有些面试题会出现)
package com.app.operator;
public class OperatorTest5 {
public static void main(String[] args) {
// 目标:练习自增、自减拓展案例(有些面试题会出现)
int c = 10;
int d = 5;
// c:10 11 12 11 c————> 最终变成了 11
// d:5 4 5 d————> 最终变成了 5
// rs: = 10 + 12 - 4 - 5 +1 + 12 rs————>结果 = 26
int rs = c++ + ++c - --d - ++d +1 + c--;
System.out.println("c = " + c); // 11
System.out.println("d = " + d); // 5
System.out.println("rs = " + rs); // 26
}
}
输出结果:
c = 11
d = 5
rs = 26
六、赋值运算符
基本赋值运算符
扩展赋值运算符(自带强制类型转换)
符号 | 作用 | 说明 |
---|
+=(常用) | 加后赋值 | a += b 等价于 a = (a的数据类型)(a + b); 将a + b的值给a | -= | 减后赋值 | a -= b 等价于 a = (a的数据类型)(a - b); 将a - b的值给a | *= | 乘后赋值 | a *= b 等价于 a = (a的数据类型)(a * b); 将a * b的值给a | /= | 除后赋值 | a /= b 等价于 a = (a的数据类型)(a / b); 将a / b的值给a | %= | 取余后赋值 | a %= b 等价于 a = (a的数据类型)(a %= b); 将a % b的值给a |
注意:扩展的赋值运算符隐含了强制类型转换
package com.app.operator;
public class OperatorDemo6 {
public static void main(String[] args) {
int a = 10;
int b = 200;
a += b;
System.out.println("a+=b = " + a);
byte i = 10;
byte j = 20;
i += j;
System.out.println("i+=j = " + i);
int m = 30;
int n = 5;
m += n;
System.out.println("m+=n = " + m);
m -= n;
System.out.println("m-=n = " + m);
m *= n;
System.out.println("m*=n = " + m);
m /= n;
System.out.println("m/=n = " + m);
m %= n;
System.out.println("m%=n = " + m);
}
}
输出结果:
a+=b = 210
i+=j = 30
m+=n = 35
m-=n = 30
m*=n = 150
m/=n = 30
m%=n = 0
七、关系运算符
- 是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(true(真),false(假))
符号 | 说明 |
---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false | != | a!=b, 判断a和b的值是否不相等,成立为true,不成立为false | > | a>b, 判断a的值是否大于b的值,成立为true,不成立为false | >= | a>=b,判断a的值是否大于等于b的值,成立为true,不成立为false | < | a<b, 判断a的值是否小于b的值,成立为true,不成立为false | <= | a<=b,判断a的值是否小于等于b的值,成立为true,不成立为false |
注意
package com.app.operator;
public class OperatorDemo7 {
public static void main(String[] args) {
int a = 10;
int b = 10;
boolean rs = a == b;
boolean rs2 = a != b;
boolean rs3 = a > b;
boolean rs4 = a >= b;
boolean rs5 = a < b;
boolean rs6 = a <= b;
System.out.println("a==b = " + rs);
System.out.println("a!=b = " + rs2);
System.out.println("a>b = " + rs3);
System.out.println("a>=b = " + rs4);
System.out.println("a<b = " + rs5);
System.out.println("a<=b = " + rs6);
System.out.println("--------------------------------");
double d = 6.6;
double d2 = 99.8;
boolean b1 = d == d2;
boolean b2 = d != d2;
boolean b3 = d > d2;
boolean b4 = d >= d2;
boolean b5 = d < d2;
boolean b6 = d <= d2;
System.out.println("d==d2 = " + b1);
System.out.println("d!=d2 = " + b2);
System.out.println("d>d2 = " + b3);
System.out.println("d>=d2 = " + b4);
System.out.println("d<d2 = " + b5);
System.out.println("d<=d2 = " + b6);
System.out.println("!!!!!!!!!!!!!!注意!!!!!!!!!!!!!!!");
System.out.println(d = d2);
}
}
输出结果:
a==b = true
a!=b = false
a>b = false
a>=b = true
a<b = false
a<=b = true
--------------------------------
d==d2 = false
d!=d2 = true
d>d2 = false
d>=d2 = false
d<d2 = true
d<=d2 = true
!!!!!!!!!!!!!!注意!!!!!!!!!!!!!!!
99.8
八、逻辑运算符
- 像京东、淘宝,你搜索一台笔记本或者一台手机,是不是要筛选品牌、屏幕尺寸、存储内存等等这些多个条件啊,这些都是要用到逻辑运算符的
package com.app.operator;
public class OperatorDemo8 {
public static void main(String[] args) {
double size = 14.3;
double storage = 256;
System.out.println("------------- 逻 辑 与 -------------");
boolean logicalAnd = size >= 14.3 & storage >= 128;
boolean logicalAnd1 = size >= 14.3 & storage <= 128;
System.out.println("logicalAnd = " + logicalAnd);
System.out.println("logicalAnd1 = " + logicalAnd1);
System.out.println("------------- 逻 辑 或 -------------");
boolean logicalOr = size >= 14.3 | storage >= 1024;
System.out.println("logicalOr = " + logicalOr);
System.out.println("------------- 逻 辑 非 -------------");
boolean logicalNot = !true;
boolean logicalNot1 = !false;
System.out.println("logicalNot = " + logicalNot);
System.out.println("logicalNot1 = " + logicalNot1);
System.out.println("------------- 逻辑异或 -------------");
boolean logicalXOR = true ^ true;
boolean logicalXOR1 = false ^ false;
boolean logicalXOR2 = true ^ false;
boolean logicalXOR3 = false ^ true;
System.out.println("logicalXOR = " + logicalXOR);
System.out.println("logicalXOR1 = " + logicalXOR1);
System.out.println("logicalXOR2 = " + logicalXOR2);
System.out.println("logicalXOR3 = " + logicalXOR3);
}
}
输出结果:
------------- 逻 辑 与 -------------
logicalAnd = true
logicalAnd1 = false
------------- 逻 辑 或 -------------
logicalOr = true
------------- 逻 辑 非 -------------
logicalNot = false
logicalNot1 = true
------------- 逻辑异或 -------------
logicalXOR = false
logicalXOR1 = false
logicalXOR2 = true
logicalXOR3 = true
短逻辑运算符
符号 | 介绍 | 说明 |
---|
&& | 短路与 | 判断结果与 “&(逻辑与)”一样。过程是左边为 false,右边则不执行 | || | 短路或 | 判断结果与“|(逻辑或)”一样。过程是左边为 true,右边则不执行 |
注意
- 逻辑与(&)、逻辑或(|)无论左边是 true 还是 false,右边都要执行!!
逻辑与(&)、逻辑或(|)、短路与(&&)、短路或(||)的区别
package com.app.operator;
public class OperatorDemo9 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("------------------ 逻 辑 与(&) ------------------");
boolean logicalAnd = a > 2 & ++b > 10;
System.out.println("logicalAnd = " + logicalAnd);
System.out.println("b = " + b);
boolean logicalAnd1 = a < 2 & ++b > 10;
System.out.println("logicalAnd1 = " + logicalAnd1);
System.out.println("b = " + b);
System.out.println("------------------ 短 路 与(&&) ------------------");
boolean dly = a < 2 && ++b > 10;
System.out.println("dly = " + dly);
System.out.println("b = " + b);
boolean dly2 = a > 2 && ++b > 10;
System.out.println("dly2 = " + dly2);
System.out.println("b = " + b);
System.out.println("------------------ 逻 辑 或(|) ------------------");
boolean logicalOr = a > 2 | ++b < 10;
System.out.println("logicalOr = " + logicalOr);
System.out.println("b = " + b);
boolean logicalOr2 = a < 2 | ++b > 10;
System.out.println("logicalOr2 = " + logicalOr2);
System.out.println("b = " + b);
System.out.println("------------------ 短 路 或(||) ------------------");
boolean dlh = a > 2 || ++b < 10;
System.out.println("dlh = " + dlh);
System.out.println("b = " + b);
boolean dlh2 = a < 2 || ++b > 10;
System.out.println("dlh2 = " + dlh2);
System.out.println("b = " + b);
}
}
输出结果:
------------------ 逻 辑 与(&) ------------------
logicalAnd = true
b = 21
logicalAnd1 = false
b = 22
------------------ 短 路 与(&&) ------------------
dly = false
b = 22
dly2 = true
b = 23
------------------ 逻 辑 或(|) ------------------
logicalOr = true
b = 24
logicalOr2 = true
b = 25
------------------ 短 路 或(||) ------------------
dlh = true
b = 25
dlh2 = true
b = 26
九、三元运算符
package com.app.operator;
public class OperatorDemo10 {
public static void main(String[] args) {
String name = "小明";
double score = 98;
String result = score >= 60 ? "考试通过" : "挂科";
System.out.println(name + "同学考得成绩:" + score + ",所以" + result + "了!");
String name2 = "晓东";
double score2 = 59.5;
String result1 = score2 >= 60 ? "考试通过" : "挂科";
System.out.println(name2 + "同学考得成绩:" + score2 + ",所以" + result1 + "了!!!");
}
}
输出结果:
小明同学考得成绩:98.0,所以考试通过了!
晓东同学考得成绩:59.5,所以挂科了!!!
小案例巩固
package com.app.operator;
public class OperatorTest11 {
public static void main(String[] args) {
int a = 100;
int b = 2000;
int max = a > b ? a : b;
System.out.println("整数" + a + "与整数" + b + "中较大值为:" + max);
int c = 10000;
int d = 5000;
int max1 = c > d ? c : d;
System.out.println("整数" + c + "与整数" + d + "中较大值为:" + max1);
}
}
输出结果:
整数100与整数2000中较大值为:2000
整数10000与整数5000中较大值为:10000
十、案例:
-
求三个整数的最大值
-
分析: -
(1)先用三元运算符获取前两个整数的最大值,并用临时变量存起来 -
(2)然后用三元运算符,让临时最大值与第三个整数进行比较,得出三个整数的最大值 -
(3)打印输出三个整数的最大值 package com.app.operator;
public class OperatorTest12 {
public static void main(String[] args) {
int a = 1900;
int b = 5;
int c = 20000;
int tempMax = a > b ? a : b;
int max = tempMax > c ? tempMax : c;
System.out.println("整数" + a + "、整数" + b + "、整数" + c + ",这三个整数的最大值为:" + max);
}
}
输出结果:
整数1900、整数5、整数20000,这三个整数的最大值为:20000
三元运算符拓展知识
package com.app.operator;
public class OperatorDemo13 {
public static void main(String[] args) {
System.out.println(10 > 3 || 10 > 3 && 10 < 3);
System.out.println((10 > 3 || 10 > 3) && 10 < 3);
}
}
输出结果:
true
false
十二、总结
基本的算术运算符
1、基本的算术运算符有哪些?
2、“/” 需要注意什么,为什么?
- 如果两个整数做除法,其结果一定是整数,因为最高类型是整数类型
“+”符号做连接符
1、+ 符号除了做基本的算术运算,还有哪些功能?
- 与字符串做 + 运算时会被当成连接符,其结果还是字符串
- 能算则算,不能算就在一起
自增自减
1、自增、自减运算符是什么,有什么作用?
- ++、–。对当前变量值+1、-1
- 例如:抖音短视频的点亮红心功能——>双击了,就红心++;取消了,就红心–;或 ++红心、–红心
2、自增、自减运算符在变量前后有区别吗?
- 如果单独使用方前后是没有区别的
- 非单独使用:++、-- 在变量前,先进行变量自增/自减,再使用变量
- 非单独使用:++、-- 在变量后,先使用变量,再进行变量自增/自减
赋值运算符
1、赋值运算符有哪些?
2、作用是什么?
- 基本作用是赋值
- += 可以实现数据的累加,把别人的数据加给自己
关系运算符
1、什么是关系运算符?
- 对数据进行条件判断的符号,最终会返回一个比较的布尔结果(true—>真,false—>假)
2、在做相等判断时,需注意什么呢?
逻辑运算符
1、逻辑运算符有哪些,有什么特点?
- 逻辑与(&):有一个false,结果是false,两个都为true结果才为true
- 短路与(&&):有一个false,结果是false。左边为false,则不会执行右边,因为满足不了两个都为true,所以直接短路(性能更好)
- 逻辑或(|):有一个true,结果是true
- 短路或(||):有一个为true,结果是true。左边为true,则不会执行右边,因为已经满足一个true,所以直接短路(性能更好)
- 逻辑非(!):!true=false; !false=true;(非真既假)
- 逻辑异或(^):相同是false,不同是true
- 注意:实际开发中,常用的逻辑运算符是:&&、||、!
|