1.运算符
1.1逻辑运算符
逻辑运算符的操作数必须是布尔值,结果也是布尔值
逻辑与:&
运算规则:只有左右两边都为true,结果才为true。
例如:true & true 结果为true
false & true 结果为false
true & false 结果为false
false & false 结果为false
逻辑或:|
运算规则:只要左右两边有一个为true,结果就为true。
例如:true | true 结果为true
false | true 结果为true
true | false 结果为true
false | false 结果为false
逻辑异或:^
运算规则:只有左右两边不同,结果才为true。
例如:true ^ true 结果为false
false ^ true 结果为true
true ^ false 结果为true
false ^ false 结果为false
逻辑非:!
运算规则:布尔值取反
例如:!true 为false
!false 为true
短路与:&&
运算规则:只有左右两边都为true,结果才为true。
它和逻辑与不同的是当&&左边为false时,右边就不看了。
短路或:||
运算规则:只要左右两边有一个为true,结果就为true。
它和逻辑或不同的是当||左边为true时,右边就不看了。
开发中一般用短路与和短路或比较多
1.2 位运算符
一般用于整数系列
左移:<<
运算规则:左移几位就相当于乘以2的几次方
右移:>>
运算规则:右移几位就相当于除以2的几次方
无符号右移:>>>
运算规则:往右移动后,左边空出来的位直接补0,不看符号位
按位与:&
**运算规则:**二进制对应位置取与 ,同时为1才为1,否则为0
按位或:|
**运算规则:**二进制对应位置取或 ,有一个为1就为1
按位异或:^
运算规则:二进制对应位置取异或 ,两者不同才为1
按位取反:~
**运算规则:**二进制对应位置取反 ,原来是1,变为0,原来是0变为1
**位运算符 都是机器数直接运算的 **
如果操作数是boolean类型,就是逻辑运算符,如果操作数是整数,那么就位运算符。
1.3三元运算符
? :
语法格式:
条件表达式 ? 结果表达式1 : 结果表达式2
?前面必须是条件,必须是boolean值
结果表达式1和结果表达式2要保持类型一致或兼容
运算规则:
整个表达式的结果:当条件表达式为true时,就取结果表达式1的值,否则就取结果表达式2的值。
例:
int a=(1>2) ? 1 : 2; //a=2
1.4运算符优先级
提示说明:
(1)表达式不要太复杂
(2)先算的使用()
2.流程控制语句
输入输出语句:
1、输出语句:
- System.out.print(输出内容); //输出内容后不换行
- System.out.println(输出内容); //输出内容后换行
2、输入语句:
键盘输入代码的三个步骤:
- 准备Scanner类型的变量 例:java.util.Scanner input = new java.util.Scanner(System.in);
- 提示输入xx
- 接收输入内容 例:int a = input.nextInt();
流程控制语句结构分为:
-
顺序结构:从上到下依次执行
-
分支结构:多个分支选择其中一个分支执行
-
循环结构:重复执行某些代码
2.1顺序结构
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
执行过程:从上到下顺序执行
2.2 分支结构
分支结构:根据条件选择性的执行某些代码
分为:
1、条件判断:if…else系列
2、选择结构:switch…case系列
2.2.1条件判断
1、单分支结构
语法格式:
if(条件表达式){
当条件表达式成立(true)时需要执行的语句块;
}
执行过程:
条件成立,就执行{}其中的语句块,不成立就不执行。
2、双分支结构
语法格式:
if(条件表达式){
当条件表达式成立(true)时需要执行的语句块1;
}else{
当条件表达式不成立(false)时需要执行的语句块2;
}
执行过程:
当条件表达式成立(true)时执行语句块1,否则执行语句块2
**注意:**对于1和2
(1)if(条件表达式)中的条件表达式的结果必须是boolean类型
(2)当{}中的语句只有一个语句(简单的语句,也可以是一个复合语句)时,可以省略{},但是不建议省略
3、多分支结构
语法格式:
if(条件表达式1){
当条件表达式1成立的时候,执行的语句块1;
}else if(条件表达式2){
当条件表达式1不成立,
条件表达式2成立的时候,执行的语句块2;
}else if(条件表达式3){
当条件表达式1不成立,
条件表达式2也不成立,
条件表达式3成立的时候,执行的语句块3;
}
。。。
【else{
当以上所有的条件表达式都不成立,需要执行的语句块n+1;
}】
执行过程:
(1)多个条件顺序往下判断,如果上面有一个条件成立了,下面的条件就不看了
(2)多个分支也只会执行其中的一个
注意:
(1)每一个条件表达式都必须是boolean值
(2)当{}中只有一个语句时,也可以省略{},但不建议省略
(3)当多个条件是“互斥”关系(没有重叠部分),顺序可以随意;
当多个条件是“包含”关系(有重叠部分),顺序不能随意,小的在上, 大的在下面
4、嵌套
if…else系列语句可以嵌套,在任意一个语句块中都可以再嵌套其他的条件语句。
执行特点:
当外层条件满足时,内层条件才判断。
2.2.2 选择结构
语法格式:
switch(表达式){
case 常量值1:
语句块1;
【break;】
case 常量值2:
语句块2;
【break;】
。。。
【default:
语句块n+1;
【break;】
】
}
执行过程:
(1)入口
-
当switch(表达式)的值与case后面的某个常量值匹配,就从这个case进入;
-
当switch(表达式)的值与case后面的所有常量值都不匹配,寻找default分支进入;
(2)一旦从“入口”进入switch,就会顺序往下执行,直到遇到“出口”
(3)出口
-
自然出口:遇到了switch的结束}
-
中断出口:遇到了break等
注意:
(1)switch(表达式)的值的类型,只能是:4种基本数据类型(byte,short,int,char),两种引用数据类型(枚举、String)
(2)case后面必须是常量值,而且不能重复
(3)表达式返回的结果的类型需要与case后的值的类型保持一致
(4)break是可选的,当表达式返回结果与某个case后的值进行匹配成功后,执行相应分支的语句,一旦进入某个分支后,只有直到遇到break才会退出switch,否则将会继续执行下一个case的语句。
(5)default是可选的。位置也不一定是最后,也可以在任意case的位置。但是不管再哪里,都是要所有case的常量值不匹配后才会进入default分支,一旦进入default分支,也是需要遇到break或switch的闭括号“}”才会停止。
2.3循环结构
循环结构:
“重复”执行某些代码
循环结构的分类:
1、for循环
2、while循环
3、do…while循环
2.3.1for循环
语法格式:
for(;;){
循环体语句块;
if(条件表达式){
break;
}
}
for(初始化表达式; 循环条件; 迭代表达式){
循环体语句块;(需要重复执行的代码)
}
执行过程:
(1)初始化表达式;
(2)判断循环条件;
(3)如果循环条件成立,先执行循环体语句块;然后执行迭代表达式,再 2…
(4)如果循环条件不成立,会结束for;
或者在当前循环中遇到break语句,也会结束当前for循环;
注意:
(1)for(;;)中的两个;是不能多也不能少
(2)循环条件必须是boolean类型
2.3.2 while循环
语法格式:
while(循环条件){
循环体语句块;
}
经典的形式:
while(true){
循环体语句块;
if(条件表达式){
break;
}
}
执行过程:
(1)先判断循环条件
(2)如果循环条件成立,就执行循环体语句块;然后回到(1)
(3)如果循环条件不成立,就结束while循环;
如果在循环体语句块中,遇到break,也会结束while循环;
注意:
(1)while(循环条件)中循环条件必须是boolean类型
2.3.3 do…while循环
语法格式:
do{
循环体语句块;
}while(循环条件);
执行过程:
(1)先执行一次循环体语句块;
(2)判断循环条件
(3)如果循环条件成立,再次执行循环体语句块;然后回到(2)…
(4)如果循环条件不成立,就结束do…while循环;
如果在循环体语句块中,遇到break,也会结束do…while循环;
注意:
(1)while(循环条件)中循环条件必须是boolean类型
(2)do{}while();最后有一个分号
(3)do…while结构的循环体语句是至少会执行一次,这个和for和while是不一样的
2.3.4 三种循环的选择
原则:三种循环之间是可以互相转换的,都能实现循环的功能
建议(习惯上):当我们次数比较明显的时候,或者说从几循环到几的时候,一般先考虑for;
当循环体语句块至少要执行一次的时候,一般先考虑do…while;
当循环条件比较明显,但是次数不明显,循环体语句块也不是至少执行一次,那么可以考虑while结构;
三种循环结构都具有四要素:
(1)循环变量的初始化表达式
(2)循环条件
(3)循环变量的修改的迭代表达式
(4)循环体语句块
2.3.5嵌套循环
一个循环体中嵌套了另一个完整的循环结构。一个循环充当另一个循环的循环体。
三种循环体中都可以嵌套另外任意一种循环结构
执行特点,先执行外层循环,外循环执行一次,内循环从头至尾执行一轮。总次数= 外循环次数*内循环次数
2.3.6 跳转语句
1、break
用于:
- switch结构
作用:结束switch结构
- 循环结构
作用:结束当前循环
2、continue
只能用于: 循环结构
作用:提前结束本次循环,继续下一次循环
3、return