🍓作者@ Autumn60
🏄欢迎关注: 👍点赞 🙌收藏 ✍️留言
👲今日鸡汤:人生就像蒲公英,看似自由,却往往身不由己,人生没有如果,只有因果!
一、运算符
什么是运算符?
//比如说:
int a = 1;
int b = 2;
a + b;
a < b;
a - b;
上述代码中的"+", "-" , "<"就是运算符了,对操作数进行操作时的符号就是运算符!
在JAVA中,有一套丰富的操作符;
1.算数运算符
运算符有: (+ - * / %)
在这里需要主义的是:%运算(即对操作数进行取余数运算);
【注意事项】:
都是二元运算符(两个操作数),使用时必须要有左右两个操作数
和数学中一样,在做除法运算和去模运算时,被除数不能为0;
2.赋值运算符
(+=,/=,%=,*=,-=)等
public static void main(String[] args) {
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 此刻a = 1,输出3
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 此刻a = 3,输出2
a *= 3; // 相当于 a = a * 3
System.out.println(a); // 此刻a = 2,输出6
a /= 3; // 相当于 a = a / 3
System.out.println(a); // 此刻a = 6,输出2
a %= 3; // 相当于 a = a % 2
System.out.println(a); // 此刻a = 2,输出2
}
2.1自增自减运算符
也就是常说的前++,和后++
public static void main(String[] args) {
int a = 1;
a++; //后置++ 表示给a的值加1,此时a的值为2
//【注意事项】:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2
System.out.println(a++);
System.out.println(a); //输出3
//总结:
//前置++就是:先使用后++!
//后置++就是:先++后使用!
}
3. 关系运算符
关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 。
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false
// 【注意事项】:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
}
4.逻辑运算符
1.逻辑与&& :
布尔表达式1 && 布尔表达式2
特点:如果表达式1为真,那么去执行表达式2,如果表达式2为真,整体为真;
如果表达式1为假,不会执行表达式2;(并且的意思);
----------------------------------------------------------------------------------------------------
语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果。
相当于现实生活中的且,比如:如果是学生,并且 带有学生证 才可以享受半票。
两个表达式都为真,结果才是真,只要有一个是假,结果就是假。
2.逻辑或||:
布尔表达式1 || 布尔表达式2
特点:如果表达式1为真,整体为真,不执行表达式2;
如果表达式1为假,那么执行表达式2,表达式2为真,整体为真。(或者的意思);
----------------------------------------------------------------------------------------------------
语法规则:表达式1 || 表达式2,左右表达式必须是boolean类型的结果。
相当于现实生活中的或,比如:买房子交钱时,全款 或者 按揭都可以,如果全款或者按揭,房子都是你的,否则站一边去。
3.逻辑非!:
!布尔表达式;(非真既假,非假既真)
短路:与或非;
----------------------------------------------------------------------------------------------------
语法规则:! 表达式
真变假,假变真。
4.短路求值
&& 和 || 遵守短路求值的规则
public static void main(String[] args) {
int a=2;//不会报错,输出false;
System.out.println(a==1 && a/0==0); //a / 0不会执行。短路与
System.out.println(10 > 20 && 10 / 0 == 0); //打印false
System.out.println(10 < 20 || 10 / 0 == 0); //打印true
}
5. 位运算符
位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。
1.按位与&:两个表达式都为真结果为真,否则结果为假,不存在短路与的功能,也是逻辑运算;
如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
二进制运算:
按位与:&
按位或:|
按位异或:^
特点:两个是相同的数字 异或 结果为0;
0异或任何数字都等于任何数字 : 0 ^ n = n ;
按位取反:
是1变0,是0变1; 0010 取反:1101;
【注意事项】:
0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应4个二进制位.
0xf 表示 10 进制的 15, 也就是二进制的 1111
printf 能够格式化输出内容, %x 表示按照十六进制输出.
\n 表示换行符
6.移位运算符:
在移位中,乘法和除法是针对正数的,右移一次,除2的1次方,两次除2的2次方,相反,左移是乘法;
左移操作符:<<
最左侧不要了,最右侧补0;
右移操作符:>>
最右侧不要了,最左侧补符号位:正数补:0,负数补:1。
无符号右移:>>>
最右侧位不要了, 最左侧补 0,无符号统统补0;
【注意事项】:
左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
移动负数位或者移位位数过大都没有意义.
7.三目运算符:
布 尔 表 达 式 1 ? 表 达 式 2 : 表 达 式 3
当表达式1位真的时候,返回表达式2,否则返回表达式3的结果!
public static void main(String[] args) {
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
System.out.println(max); //输出20
}
二、逻辑控制
顺序结构
顺序结构就是按照顺序往下执行
System.out.println("1");//执行打印1
System.out.println("2");//执行打印2
System.out.println("3");//执行打印3
2.分支结构
1.if语句:
假如我好好学习敲代码,那么我就不会挂科,否则我就会挂科;
if(布尔表达式){
System.out.println("我成绩及格了");
} else {
System.out.println("我挂科了")
}
语法格式:
if(布尔表达式){
// 语句1
}else if {
// 语句2
} else {
// 语句3
}
2.switch 语句
先计算表达式的值
和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
当表达式的值没有与所列项匹配时,执行default
代码示范:
//根据输入的数字,选择打印星期几!
int x = 1;
switch (x) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
}
【注意事项】
多个case后的常量值不可以重复
switch的括号内只能是以下类型的表达式:
基本类型:byte、char、short、int,注意不能是long类型
引用类型:String常量串、枚举类型
3.循环结构
基本语法格式:
1.while 循环
while(循环条件){
循环语句;
}
代码示范: 计算 1! + 2! + 3! + 4! + 5!
public static void main(String[] args) {
int num = 1;
int sum = 0;
// 外层循环负责求阶乘的和
while (num <= 5) {
int factorResult = 1;
int tmp = 1;
// 里层循环负责完成求阶乘的细节.
while (tmp <= num) {
factorResult *= tmp;
tmp++;
}
sum += factorResult;
num++;
}
System.out.println("sum = " + sum);
} //运行结果应该为:sum = 153
【注意事项】
和if类似,while下面的语句可以不写{},但是不写的时候只能支持一条语句,建议还是加上{}
和if类似,while后面{建议和while写在同一行}.
和if类似,while后面不要多些 分号,否则可能导致循环不能正确执行.
break:用于结束所有循环,剩余循环不会运行;
continue:结束本趟循环,跳到判断部分;
2.for 循环
基本语法格式:
for(表达式①;布尔表达式②;表达式③){
表达式④;
}
执行过程:
表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
表达式2: 循环条件,满则循环继续,否则循环结束
表达式3: 循环变量更新方式
【注意事项】和(while类似)
和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
和 if 类似, for 后面的 { 建议和 while 写在同一行.
和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.
和while循环一样,结束单趟循环用continue,结束整个循环用break
3.do while循环
基本语法格式:
do{
循环语句;
}while(循环条件);
do{先循环,后判断;
}while
循环条件为 true, 则执行循环语句; 否则结束循环.
代码示范: 计算 1 - 100 的和
int n = 1;
int result = 0;
while (n <= 100) {
result += n;
n++;
}
System.out.println(num);
// 执行结果 5050
三、总结:
本章节学习
一、运算符
1.算数运算符
2.赋值运算符
3.关系运算符
4.逻辑运算符
5.位运算符
6.移位运算符
7.三目运算符
二:逻辑控制
1.顺序结构
2.分支结构
3.循环结构