流程控制
- 分为顺序结构、 分支结构、循环结构
顺序结构
- 程序从上而下执行流程,简单的例子如main的从上而下执行
分支结构
- if-else、switch-case两种分支语句。但是if-else的语句要比switch-case的范围大,在相同情况下,优先推荐使用switch-case语句。三元运算符与if-else优先使用三元
-
if-else有三种形式if、if-else、if-if-else-else
-
switch-case语句
- 表达式指定的六种值类型:byte、short、char、int、enum(枚举1.5新增)、String(1.7新增)
- case是程序进入的人口,break语句是终止。
- break语句可以灵活运用达到程序所要实现的功能
- default模块可以灵活放置
// 求出2020年下3月份之前一共有多少天数
int moth = 3,days = 0;
switch(moth){
default:
System.out.println("错误");
break;
case 12 :days+=31;
case 11 :days+=30;
......
case 1 :days+=31;
break;
}
循环结构
-
for(;;){}、while(true){}、do{}while(true)【都是死循环结构】
-
循环语句分为四个部分
- 初始化部分 ①
- 循环条件部分 ②
- 循环体部分 ③
- 迭代部分 ④
for(①;②;④){
③;
}
//执行流程:1-2-3-4-2-3-4-...-2
//可以有多个变量更新,用逗号分隔
①
while(②){
③;
④
}
//执行流程:1-2-3-4-2-3-4-...-2
①
do{
③;
④
}while(②);
//执行流程:1-3-4-2-3-4-...-2
//至少执行一次循环体
break、continue、lable关键字
- break在switch和循环语句,continue在循环语句
- break终止当层循环、continue终止本次循环
- lable可以在嵌套循环中使用,来让break、continue控制外层
运算符
算术、关系、位、逻辑、赋值、其他运算符
算术运算符
-
+、-、*、/、%、++、–
-
%(取模)根据取模数的符号运算出对应的符号。例如:-7%2 = -1
-
++分为前后两种情况
// 前++先赋值在进行运算 int a =3,b=0; b = ++a; // a=4,b=4 相当于是a=3+1 ,b=a; // 后++先运算在进行赋值 b = a++; // a=5,b=4 相当于是 b=a,a=4+1; b = (a++)+4+(++a); // b=5+4+7=16,a=7
关系运算符
-
==、!=、<、>、>=、<=
-
六种情况来判断两个变量之间的关系为true或false
逻辑运算符
-
&、&&、|、||、!
-
& (两边都会进行判断否为true)
-
&& (只要左边一边为false就不会进行右边的比较)
-
| (两边都会进行判断否为true)
-
|| (只要左边为true就不会进行右边的比较)
-
! (对操作数的逻辑状态进行取反操作)
赋值运算符
-
=、+=、***-=、=、/=、%=
-
相当于是对类型进行了一次运算,但是其值的类型不会发生改变
条件运算符
-
(表达式)?(操作1):(操作2)
-
前一个表达式为true的情况下进行操作1,否则进行操作2
位运算符
-
&、|、^、<<、>>、>>>(无符号)
-
对数据进行二进制间的运算处理,效率较高
0 0 0 0 1 1 1 1 --------- a 0 0 0 0 1 0 0 1 --------- b 0 0 0 0 1 0 0 1 --------- a&b 0 0 0 0 1 1 1 1 --------- a|b 0 0 0 0 0 1 1 1 --------- a^b int a = 12; a<<2;// 相当于12*2^2=48 a>>2;// 相当于12/(2^2)=3
instanceof 运算符
- 主要是用来确定对象是否为一个特定类型,例如:“name” instanceof String