目录
- 运算符
- 1.算术运算符
- 案例:数值拆分
- 2.“+”做连接符
- 3.自增自减运算符
- 自增自减的使用事项
- 自增自减的案列
- 4.赋值运算符
- 基本赋值运算符:“=”
- 扩展赋值运算符:“+=”、“-=”、“*=”、“/=”
- 5.关系运算符
- 6.逻辑运算符
- 短路逻辑运算符
- 总结
- 7.三元运算符
- 三元运算符介绍
- 案例:求三个整数的最大值
- 拓展知识:三元运算符的嵌套
- 8.运算符优先级
- 案例:键盘录入技术
- 需求:
- 键盘录入功能实现的三个步骤
运算符
运算符:对字面量或者变量进行操作的符号。
1.算术运算符
符号 | 作用 | 说明 |
+ | 加 | / |
- | 减 | / |
* | 乘 | / |
/ | 除 | 在Java中两个整数相除结果还是整数 |
% | 取余 | / |
/ 需要注意什么,为什么?
如果两个整数做除法,其结果一定是整数,因为最高类型是整数。
案例:数值拆分
需求:一个三位数,将其拆分为个位、十位、百位后,打印在控制台。
int data = 589;
int ge = data % 10;
System.out.println(ge);
int shi = data / 10 % 10;
System.out.println(shi);
int bai = data /100;
System.out.println(bai);
2.“+”做连接符
- “+” 符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串。
能算则算,不能算就在一起。
3.自增自减运算符
符号 | 作用 | 说明 |
++ | 自增 | 变量自身的值加1 |
- - | 自减 | 变量自身的值减1 |
注意:
- ++和- - 既可以放在变量的后边,也可以放在变量的前边。
- ++ 、- - 只能操作变量,不能操作字面量。
自增自减的使用事项
++、- -如果不是单独使用(放在表达式中、或者同时有其他操作),放前后或有明显的区别。
- 放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算。
int a = 10;
int rs = ++a;
- 放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1。
int b = 10;
int rs = b++;
自增自减的案列
System.out.println("----拓展案列----");
int k = 3;
int p = 5;
// k 3 4 5 4
// p 5 4 3 4
// ks 3 + 5 - 4 + 4 - 5 + 4 + 2
int rs = k++ + ++k - --p + p-- - k-- + ++p + 2;
System.out.println(k); // 4
System.out.println(p);// 4
System.out.println(rs); // 9
结果为:
4.赋值运算符
基本赋值运算符:“=”
扩展赋值运算符:“+=”、“-=”、“*=”、“/=”
符号 | 作用 | 说明 |
+= | 加后赋值 | a+=b 等价于a=(a的数据类型)(a+b); |
-= | 减后赋值 | a-=b 等价于a=(a的数据类型)(a-b); |
*= | 乘后赋值 | a*=b 等价于a=(a的数据类型)(a*b); |
/= | 除后赋值 | a/=b 等价于a=(a的数据类型)(a/b); |
%= | 取余后赋值 | a%=b 等价于a=(a的数据类型)(a%b); |
注意:扩展的赋值运算符隐含了强制类型转换。
5.关系运算符
对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)。
注意:在做相等判断时,不要把==误写成=。
6.逻辑运算符
可以把多个布尔结果放在一起运算,最终返回一个布尔结果。
短路逻辑运算符
注意:逻辑与“&”、逻辑或“|”:无论左边是false还是true,右边都要执行。
System.out.println("----&& & || |的区别-----");
int a = 10;
int b = 20;
System.out.println(a > 100 && ++b > 10);//false
System.out.println("&&后面的不执行,b的值未变:"+ b);//20
int i = 10;
int j = 20;
System.out.println(i > 100 & ++j > 10);//false
System.out.println("&后面的运行,j的值加1:" + j);//21
int m = 10;
int n = 20;
System.out.println(m > 2 || ++n > 10);//true
System.out.println("||后面的不执行,n的值加1:" + n);//20
int x = 10;
int y = 20;
System.out.println(x > 2 | ++y > 10);//true
System.out.println("|后面的运行,y的值加1:" + y);//21
运行结果:
总结
①逻辑与“&”:有一个为false、结果是false。
②短路与“&&”:一个为false、结果是false。前一个为false,后一个条件不执行。
③逻辑与“|”:有一个为true、结果是true。
④短路与“||”:一个为true、结果是true。前一个为true,后一个条件不执行。
⑤逻辑非“!”:!false=true、!true=false。
⑥逻辑异或“^”:相同是false、不同是true。
注意:实际开发中、常用的逻辑运算符还是:&&、||、!。
7.三元运算符
三元运算符介绍
格式:条件表达式 ?值1 : 值2;
执行流程:
首先计算表达式的值,如果值未true,返回值1,如果为false,返回值2。
场景:
// 目标:学会使用三元运算符,并使用其流程
double socre = 98;
String rs = socre >= 60 ? "考试通过" : "挂科";
System.out.println(rs);
double socre1 = 18;
String rs1 = socre1 >= 60 ? "考试通过" : "挂科";
System.out.println(rs1);
//案例:从两个整数中找出较大值
int a = 10000;
int b = 2000;
int max = a > b ? a : b;
System.out.println(max);
结果:
案例:求三个整数的最大值
需求:定义三个整数,找出最大值并打印在控制台。
分析:
①用三元运算符获取前两个整数的最大值,并用临时变量保存起来。
- num1 > num2 ?num1 : num2;
②用三元运算符,让临时变量和第三个整数比较,并记录结果。
- temp > num3 ? temp : num3;
③输出结果。
int i = 10;
int j = 30;
int k = 50;
//1.找出2个整数的最大值
int temp = i > j ? i : j;
//2.拿临时变量与第三个值继续比较
int rsMax = temp > k ? temp : k;
System.out.println(rsMax);//50
拓展知识:三元运算符的嵌套
System.out.println("-------拓展知识------");
int i = 10;
int j = 30;
int k = 50;
// 三元运算符的嵌套使用
int rsMax1 = i > j ? i > k ? i : k : j > k ? j : k;
//辅助理解:int rsMax1 = i > j ? (i > k ? i : k) : (j > k ? j : k);
System.out.println(rsMax1);
运行结果如下:
8.运算符优先级
运算符的先执行后执行要看优先级
案例:键盘录入技术
需求:
- 请完成Java程序与用户交互,比如录入用户的名称、年龄? API。
- Java写好的程序(功能代码),直接调用。
- Oracle也为Java写好的程序提供了相应的API文档(技术使用说明书)。
下载API文档:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
键盘录入功能实现的三个步骤
①导包:告诉程序去JDK的哪个包找扫描器技术。
②写一行代码代表得到键盘扫描对象。
③等待接收用户输入数据。
注意:
- System、String在JDK中的Java.long包下。
- lang包不需要我们导包,是默认的包。
案例代码:
package xuexi.scanner;
// 1.导包(不需要自己写,通过工具进行导入更加方便)
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
// 目标:学会使用键盘录入技术
// 2.得到一个键盘扫描器对象
Scanner sc = new Scanner(System.in);
//3.调用sc对象的功能等待接收用户输入的数据
//这个代码会等待用户输入数据,直到用户输入完成数据并按了回车键就会把数据拿到
System.out.println("请您输入您的年龄:");
int age = sc.nextInt();
System.out.println("您的年龄是:" + age);
System.out.println("请您输入您的名称:");
String name = sc.next();
System.out.println("欢迎:" + name);
}
}
效果展示: