javaSE
Day03
本来觉得se比较简单,如果忘记看一下笔记也可以捡起来,但是时间长了,奈何记性太差,学习之后老是忘记自己曾经都学会过什么,所以即便是基础也决定要虚心对待,记录如果出现错误,随时修改。
在csdn记录一下自己学习的过程。
1.流程控制语句结构
流程控制语句结构分类
1、顺序结构:从上往下依次执行
2、分支结构:满足条件的执行,或者说有条件的执行
3、循环结构:根据条件重复执行某些语句
分支结构
1、if..else的条件判断
2、switch...case选择结构
if..else的条件判断
(1)单分支条件判断
语法结构:
if(条件表达式){
当条件成立时,要执行的语句块
}
说明:
if()中必须是boolean类型的变量或boolean类型的表达式
如果{}中只有一条语句,{}可以省略,但是标准的都建议保留
(2)双分支条件判断
语法结构:
if(条件表达式){
当条件成立时,要执行的语句块1
}else{
当条件不成立时,要执行的语句块2
}
说明:
if()中必须是boolean类型的变量或boolean类型的表达式
如果{}中只有一条语句,{}可以省略,但是标准的都建议保留
当条件成立,要执行语句块1,否则执行语句块2,两者只能执行一个
(3)多分支条件判断
语法结构:
if(条件表达式1){
当条件成立时,要执行的语句块1
}else if(条件表达式2){ //注意,else和if之间有空格
当条件不成立时,要执行的语句块2
}else if(条件表达式3){ //注意,else和if之间有空格
当条件不成立时,要执行的语句块3
}...
else{
当条件不成立时,要执行的语句块n+1
}
说明:
if()中必须是boolean类型的变量或boolean类型的表达式.
如果{}中只有一条语句,{}可以省略,但是标准的都建议保留.
多个条件是依次判断,如果上面的某个条件成立了,下面的条件就不看了
哪个条件成立,就执行对应的语句块
如果所有的条件都不成立,如果存在最后的单独的else,就执行最后的else.
如果多个条件的范围是有包含关系,那么条件的顺序不能随意,小的在上面大的在下面
如果多个条件的范围是互斥关系,那么条件的顺序随意.
(4)嵌套条件判断
在if分支中可能还包含另一个条件判断
或者在else分支还包含另一个条件判断
说明:只有外面的条件满足了,才会继续看里面的条件。
switch...case选择结构
语法结构:
switch(表达式){
case 常量值1:
语句块1;
break;
case 常量值2:
语句块2;
break;
case 常量值3:
语句块3;
break;
...
default:
语句块n+1;
break;
}
//break和default按照实际情况来选择使用
执行特点
(1)入口
A:当switch(表达式)中表达式的值与某一个case后面的常量值匹配了,就从这个case分支进入执行。
B:与任意一个case都不匹配,从default进入
(2)出口
A:自然出口:switch的结束
B:中断出口:break; return;(方法的返回结束标志)
(3)贯穿
从入口进去之后,会一直往下执行,甚至从一个case分支贯穿到另一个分支,直到遇到break或者switch结束才结束。
要求
(1)switch(表达式)中表达式的类型有要求:
只能是byte,short,char,int,String(JDK1.7才支持),枚举(JDK1.5才支持)
(2)case后面必须是常量或常量表达式,不能是变量
(3)多个case后面的常量值不能重复
(4)case之后如果是数字相互或或者与的关系,直接以二进制算法的形式得到一个数字,
技巧:如果存在或的关系,可以直接多个选择之后再break
循环结构
1、什么情况下会考虑使用循环结构?
如果某些语句可能需要重复执行。
2、循环的语句形式有三种
(1)for循环
(2)while循环
(3)do...while循环
说明:
(1)三种形式的循环是可以互相替换的
(2)但是习惯上for循环可能适用于次数比较明显,while适用于特别注重循环条件,
do...while循环适用于循环语句至少执行一次。
for循环(开发中使用最最多的一种形式)
1、语法结构
for(;;){
循环体语句块;
}
for(初始化表达式; 循环条件; 迭代表达式){
循环体语句块;
}
2、说明
(1)循环体语句块:表示需要重复执行的语句
(2)for(;;)中的;不能多也不能少
(3)初始化表达式:用于对循环变量的声明和初始化
(4)循环条件:用于控制循环开始和结束的条件,条件满足就继续循环,条件不满足就结束循环
循环条件表达式必须是boolean类型。
- 迭代表达式:用于修改循环变量的值
- 迭代表达式中如果是数值的变化,要写+=
3、执行过程
(1)初始化表达式;
(2)判断循环条件是否成立
(3)如果成立,执行循环体语句块1次,然后去执行迭代表达式,再回到(2)
如果不成立,结束for循环
while循环
1、语法结构
while(循环条件){
循环体语句块;
}
细化后:
循环变量初始化;
while(循环条件){
循环体语句块;
迭代表达式用于修改循环变量;
}
2、执行过程
while(循环条件){
循环体语句块;
}
(1)先判断循环条件
(2)如果条件成立,就执行循环体语句块,然后回到(1)
如果条件不成立,直接结束
do...while循环
1、语法结构
do{
循环体语句块;
}while(循环条件);
2、说明
(1)注意:do...while结构的while()后面有一个;号
(2)do...while循环的循环体语句,至少执行一次
3、执行过程
(1)上来先执行一次循环体语句块;
(2)再判断循环条件
(3)条件成立,再次执行循环体语句块;然后回到(2);
条件不成立,结束循环
以上三种循环,都是循环条件成立,才重复循环体
break和continue
break:
(1)用在switch中,用于提前结束switch
(2)用在循环中,用于提前结束当前循环
continue:
只能用在循环中,用于提前结束本次循环,提前进入下一次循环
循环的嵌套
1、什么循环的嵌套?
循环的语句块中还有一个循环。
(1)for套for
(2)for套while
(3)for套do...while
(4)while套for
....
2、无论是哪一种循环嵌套,都有一个原则:
外循环循环一次,内循环循环一轮。
输出语句
输出并换行
System.out.println(xx);
System.out.println(); //输出一个换行符
输出不换行
System.out.print();//错误
System.out.print(xx);
输入语句
第一步:声明一个Scanner的变量,并创建对象
java.util.Scanner input = new java.util.Scanner(System.in);
第二步:建议,提示用户输入
System.out.print("请输入xxx");
第三步:接收用户的输入
int类型 变量 = input.nextInt();
String类型 变量 = input.next();
double类型 变量 = input.nextDouble();
char类型 变量 = input.next().charAt(0);
boolean类型 变量 = input.nextBoolean();
float类型 变量 = input.nextFloat();
long类型 变量 = input.nextLong();