文章目录
😹 作者: gh-xiaohe
😻 gh-xiaohe的博客
😽 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!!
🚏 运算符
🚀 基本算数运算符
- 运算符:对字面量或者变量进行操作的符号。
🚬 算数运算符
public class OperatorDemo1 {
public static void main(String[] args) {
// 目标:掌握基本的算术算术运算符的使用:+ - * / %
int a = 10;
int b = 3;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b); // 3.3333 ==> 3 转成整形
System.out.println(a * 1.0 / b); // 3.3333
System.out.println(3 / 2); // 1
// 让数据 变成小数 整数 * 1.0 类型就是 double 类型 放在前面 乘 放在后面 乘 3 / 2 = 1 1 * 1.0 = 1.0
System.out.println(3 * 1.0 / 2); // 1.5
System.out.println(3 / 2 * 1.0); // 1.0
System.out.println(a % b); // 1
}
}
🚬 小技巧
整数做运算 让其结果变成小数 如果操作 * 1.0
🚬 总结
- 算数运算符有哪些?
- 、-、 *、 /、 %
- / 需要注意什么,为什么?
- 如果两个整数做除法,其结果一定是整数,因为最高类型是整数。
🚬 案例数值拆分
需求:一个三位数,将其拆分为个位、十位、百位后,打印在控制台
public class OperatorTest2 {
public static void main(String[] args) {
// 需求:拆分3位数,把个位、十位、百位分别输出
int data = 589;
// 1、个位
int ge = data % 10;
System.out.println(ge);
// 2、十位
int shi = data / 10 % 10;
System.out.println(shi);
// 3、百位
int bai = data / 100;
System.out.println(bai);
}
}
🚄 +符号做连接符
- “+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串。
- 小技巧
- 能算则算,不能算就在一起。(计算机很聪明)
🚬 演示
public class OperatorDemo3 {
public static void main(String[] args) {
// 目标:+符号做连接符的识别
int a = 5 ;
System.out.println("abc" + 'a'); // abca
System.out.println("abc" + a); // abc5
System.out.println(5 + a); // 10
System.out.println("abc" + 5 + 'a'); // abc5a
System.out.println(15 + "abc" + 15); // 15abc15
System.out.println(a + 'a'); // 102
System.out.println(a + "" +'a'); // 5a
System.out.println(a + 'a'+" itheima "); // 102 itheima
System.out.println("itheima"+ a + 'a'); // itheima5a
System.out.println("itheima"+ ( a + 'a' ));// itheima102
}
}
🚬 总结:
- “+” 除了做基本数学运算,还有哪些功能?
- 与字符串做+运算时会被当成连接符 ,其结果还是字符串。
- 能算则算,不能算就在一起。
🚒 自增自减运算符
🚬 注意:
- ++ 和 – 既可以放在变量的后边,也可以放在变量的前边。
- ++ 、-- 只能操作变量,不能操作字面量的。
int a = 10;
// a++; // a = a + 1
++a; // a = a + 1
System.out.println(a); // 11
🚬 自增自减的使用注意事项
++、–如果不是单独使用(如在表达式中、或者同时有其它操
作),放在变量前后会存在明显区别
-
放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算。
-
放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1
public class OperatorDemo4 {
public static void main(String[] args) {
// 目标:学会使用自增自减运算符: ++ --
int a = 10;
// a++; // a = a + 1
++a; // a = a + 1
System.out.println(a); // 11
int b = 10;
//b--; // b = b -1
--b;
System.out.println(b); // 9
System.out.println("------------------------------");
// 在表达式中或者不是单独操作的情况,++ -- 在变量前后存在区别
// ++ -- 在变量前面。先+1 -1 再使用。
int i = 10;
int j = ++i;
System.out.println(i); // 11
System.out.println(j); // 11
// ++ -- 在变量的后面 先使用再+1 -1
int m = 10;
int n = m++;
System.out.println(m); // 11
System.out.println(n); // 10
}
}
🚬 总结
- 自增、自减运算符是什么,有什么作用,需要注意什么?
- ++、–。对当前变量值+1、-1
- 只能操作变量,不能操作字面量
- 自增、自减运算符在变量前后有区别吗?
- 如果单独使用放前后是没有区别的。
- 非单独使用:在变量前 ,先进行变量自增/自减,再使用变量。
- 非单独使用:在变量后 ,先使用变量,再进行变量自增/自减。
🚬 自增、自减拓展案例(面试题可能会出现)
public class OperatorDemo4 {
public static void main(String[] args) {
System.out.println("-----------拓展案例(可以了解和参考)--------------");
/*
int rs3 = c++ + ++c - --d - ++d + 1 + c--;
未运算 11 12 5 4 12 -> 11
运算值 10 + 12 - 4 - 5 + 1 + 12 // 26
c 10 -> 11 - > 12 -> 11
d 5 -> 4 - > 5
* */
System.out.println(rs3); //26
System.out.println(c); // 11
System.out.println(d); // 5
}
}
🚤 赋值运算符
🚬 基本赋值运算符
- 就是“=”
🚬 扩展赋值运算符
注意:扩展的赋值运算符隐含了强制类型转换。
public class OperatorDemo5 {
public static void main(String[] args) {
// 目标:学会使用赋值运算符:= += -= *= /= %=
int a = 10;
int b = 200;
// a = a + b;
a += b; // a = (int)(a + b)
System.out.println(a); // 210
byte i = 10;
byte j = 20;
// i = (byte) (i + j);
i += j; // i = (byte) (i + j);
System.out.println(i); // 30
int m = 10;
int n = 5;
//m += n;
//m -= n; // 等价于: m = (int)(m - n)
//m *= n; // 等价于: m = (int)(m * n)
//m /= n; // 等价于: m = (int)(m / n)
m %= n; // 等价于: m = (int)(m % n) 0
System.out.println(m);
}
}
🚬 总结
- 赋值运算符有哪些?
- =、+=、-=、*=、/=、%=
- 作用是什么?
- 基本作用是赋值,扩展运算符还自带了强制类型转换。
- +=还可以实现数据的累加,把别人的数据加给自己
🚗 关系运算符
-
是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)。
注意:在做相等判断是,千万不要把 == 误写成 =
public class OperatorDemo6 {
public static void main(String[] args) {
// 目标:学会使用关系运算符。
int a = 10;
int b = 10;
boolean rs = a == b;
System.out.println(rs); //true
System.out.println(a == b); //true
System.out.println(a != b); // false
System.out.println(a > b); // false
System.out.println(a >= b); // true
System.out.println(a < b); // false
System.out.println(a <= b); // true
int i = 10;
int j = 5;
System.out.println(i == j); // false
System.out.println(i != j); // true
System.out.println(i > j); // true
System.out.println(i >= j); // true
System.out.println(i < j); // false
System.out.println(i <= j); // false
System.out.println(i = j); // 5 相等判断必须是== 如果使用=是在进行赋值操作!
}
}
🚲 逻辑运算符
🚬 逻辑运算符概述(既然想看结果,又想执行 &、|)
- 可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果。(同时满足多个条件)
🚬 短路逻辑运算符(使用较多)
注意:逻辑与 “&” 、逻辑或“|”: 无论左边是 false还是 true,
右边都要执行。
public class OperatorDemo7 {
public static void main(String[] args) {
// 目标:学会使用逻辑运算符,并能够选择合适的逻辑运算符解决问题。
double size = 9.8;
double storage = 6;
// 需求:尺寸大于等于6.95 内存要大于等于8GB
// 注意:必须前后都是true结果才是true
System.out.println(size >= 6.95 & storage >=8); // false
// 需求:要么内存大于等于8 要么尺寸大于等于6.95
// 注意:只要有一个是true 结果就一定是true
System.out.println(size >= 6.95 | storage >=8); // true
System.out.println(!true); // false
System.out.println(!false); // true
// 逻辑异或:必须两个不同结果才是true
System.out.println(false ^ true); // true
System.out.println(true ^ false); // true
System.out.println(true ^ true); // false
System.out.println(false ^ false); // false
System.out.println("-----------&& & || |的区别-------------------");
int a = 10;
int b = 20;
// System.out.println(a > 100 && ++b > 10);
System.out.println(a > 100 & ++b > 10); //false
System.out.println(b); //21
int i = 10;
int j = 20;
//System.out.println(i > 2 || ++j > 10);
System.out.println(i > 2 | ++j > 10); // true
System.out.println(j); // 21
}
}
🚬 总结
- 逻辑运算符有哪些,有什么特点?
- 逻辑与“&” :有一个为false、结果是false
- 短路与&&: 一个为false、结果是false。前一个为false,后一个条件不执行了
- 逻辑或“|”:有一个为true、结果是true
- 短路或||:一个为true、结果是true。前一个为true,后一个条件不执行了
- 逻辑非“!”:!false=true、 !true=false
- 逻辑异或“^” :相同是false、不同是true。
- 注意:实际开发中、常用的逻辑运算符还是:&& 、 || 、 !
🛴 三元运算符
public class OperatorDemo8 {
public static void main(String[] args) {
// 目标:学会使用三元运算符,理解其流程
double score = 18;
String rs = score >= 60 ? "考试通过" : "挂科";
System.out.println(rs); // 挂科
// 需求:需要从2个整数中找出较大值
int a = 10000;
int b = 2000;
int max = a > b ? a : b;
System.out.println(max); // 10000
}
}
🚬 案例 求三个整数的最大值
需求:定义三个整数,找出最大值并打印在控制台。
public class OperatorDemo8 {
public static void main(String[] args) {
/**
分析:
用三元运算符获取前两个整数的最大值,并用临时变量保存起来。
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("-------------拓展知识-------------");
/*
i > j
true i > k ? i : k 如果 i > j 成立 比较 i 和 k 的大小
false j > k ? j : k 如果 i > j 不成立 比较 j 和 k 的大小
* */
int rsMax1 = i > j ? (i > k ? i : k) : (j > k ? j : k);
System.out.println(rsMax1); // 50
}
}
🏍 运算符优先级
- 在表达式中,哪个运算符先执行后执行是要看优先级的,例如 “*、/” 的优先级高于”+、-”。
🚏 案例技术:键盘录入
需求:
- 请完成Java程序与用户交互,比如录入用户输入的名称、年龄,怎么办?。
API(Application Programming Interface,应用程序编程接口)
-
Java写好的程序(功能代码),咱们可以直接调用。
-
Oracle也为Java写好的程序提供了相应的API文档(技术使用说明书)。
🚀 键盘录入功能实现的三个步骤:
🚄 注意:
-
System、String在JDK中的Java.lang包下
-
lang包不需要我们导包,是默认的包。
// 1、导包操作 (并不需要自己写的,以后通过工具进行导入更方便)
public class ScannerDemo {
public static void main(String[] args) {
// 目标:接收用户的键盘输入的数据。
// 2、得到一个键盘扫描器对象
Scanner sc = new Scanner(System.in);
System.out.println("请您输入您的年龄:");
// 3、等待接收用户输入一个整数,按了回车键才会把数据交给age变量
int age = sc.nextInt();
System.out.println("您的年龄是:" + age);
System.out.println("请您输入您的名称:");
// 4、等待接收用户输入一个字符串,按了回车键才会把数据交给name变量
String name = sc.next();
System.out.println(name + "欢迎进入系统!");
}
}
🚒 总结:
-
API是什么?
-
Application Programming Interface,应用程序编程接口。
-
Java写好的程序,咱们可以直接调用。
-
-
键盘录入的开发步骤导包:
- import java.util.Scanner;
- 抄写代码得到扫描器对象:Scanner sc=new Scanner(System.in)
- 抄写代码等待接收用户输入的数据:sc.nextlnt()、sc.next()