java入门
流程控制语句
顺序结构 : 从上到下,从左到右
选择结构|分支结构 : 满足条件才能执行一些代码
循环结构 : 让一些代码可以重复执行多次
选择结构 :
if语句
switch语句
if语句
单选泽|单分支
if(表达式){
语句体;
}
执行流程:
1.计算表达式,得到一个boolean结果
2.如果结果为true,执行{}中的语句体
3.如果结果为false,就不执行直接跳过if结构
双选择|双分支
if(表达式1){
语句体1;
}else{
语句体2;
}
执行流程:
1.计算表达式1,得到一个boolean结果
2.如果结果为true,执行{}中的语句体1
3.如果结果为false,执行{}中的语句体2
多选择|多分支
if(表达式1){
语句体1;
}else if(表达式2){
语句体2;
}else if(表达式3){
语句体3;
}…
else{
如果以上的if条件都不满足就执行这个语句体n
}
注意:
使用多选择与多个单选择之间区别 : 1)语义化结构 2)执行判断次数 3)执行语句体次数
当{}中的语句体只有一句时候,前后的{}可以省略
switch语句
switch : 定值判断
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
…
default: --> 接盘侠
语句体n;
break;
}
表达式 : 一般为一个 变量或者一个表达式
类型: byte,short,int,char,枚举(jdk5新增),String(jdk7)
case : 后面接一个定值,不能是区间,使用定值与表达式的结果进行判断,相等执行后面对应的语句体,不相等继续向下判断
break : 结束switch语句
防止case穿透问题
default : 默认的
如果以上的case后的值与表达式的结果都不相等时候,执行default后的代码
位置可变,可以在switch语句{}的任意位置
if语句和switch语句的区别
if与switch与条件运算符之间的区别:
条件运算符: 根据条件做判断 运算符 结构简单,受限制->判断条件单一,直接根据判断条件获取结果,肯定会得到一个结果
结构复杂使用if或者switch
if-> 定值判断,区间判断
switch->定值判断
能用switch的都能if,能用if不一定能用switch
建议: 简单合适结构可以条件运算符,复杂的,定值
扩展:
如何存储一个boolean类型的变量flag,要求对flag的值进行判定->true false
代码展示
boolean flag = false;
switch(flag+""){
case "true":
System.out.println("true");
break;
case "false":
System.out.println("false");
break;
}
//1)
int i = flag ? 0 : 1;
//2)
if(flag){
i = 0;
}else{
i = 1;
}
switch(i){
case 0:
System.out.println("true");
break;
case 1:
System.out.println("false");
break;
}
循环结构
循环结构:
控制一些代码重复执行多次
for循环
while循环
do…while循环
for循环
for(条件初始化;条件判断;条件变化){
重复执行的语句;
}
条件初始化: 声明一个变量并且第一次赋值 i
条件判断 : 对变量i的值的判断->结果为boolean的值
条件变化 : 变量i自身值的改变
执行流程:
1.条件初始化,得到一个变量i
2.条件判断的结果->boolean
3.true->执行{}中的代码->false结束循环
4.条件变化
重复执行第2,3,4步骤
注意:
循环结构中,如果{}中的语句体只有一句,前后的{}可以省略
循环体重可以使用循环的条件变量i,可以不使用
for循环是循环结构中最常用的循环结构
for循环代码展示与拓展
public class Class008_ForTest {
public static void main(String[] args) {
//求1-100的和,求1-100的偶数和,求1-100的奇数和
//1)找到1~100之间的每个数
//2)求和
int sum = 0 ; //存储1~100之间整数和
int sum1 = 0 ; //存储奇数和
int sum2 = 0 ; //存储偶数和
for(int i=1;i<=100;i++){
System.out.println(i);
sum+=i; //sum = sum+i;
}
System.out.println(sum);
//偶数和
for(int i=0;i<=100;i++){
//偶数
if(i%2==0){
sum2+=i;
}else{
//奇数
sum1+=i;
}
}
sum2 = 0; //归零
for(int i=0;i<=100;i+=2){
sum2+=i;
}
System.out.println("奇数和 = "+sum1);
System.out.println("偶数和 = "+sum2);
//1-50当中能被4整除的数的和
sum = 0;
for(int i=1;i<=50;i++){
if(i%4==0){
sum+=i;
}
}
System.out.println(sum);
//求出 1-100当中既能被3整除又能被5整除还能被2整除的和,
sum = 0;
for(int i=1;i<=100;i++){
if(i%2==0 && i%5==0 && i%3==0){
sum+=i;
}
}
System.out.println(sum);
//求出 1-100当中能被3整除或者能被5整除或者能被2整除的和
sum = 0;
for(int i=1;i<=100;i++){
if(i%2==0 || i%5==0 || i%3==0){
sum+=i;
}
}
System.out.println(sum);
//求5的阶乘 5! 5*4*3*2*1
int result = 1; //记录乘积
for(int i=5;i>=1;i--){
result*=i;
}
System.out.println(result);
System.out.println("--------------------------------------------");
//请找出[100,300]之间能被5整除的所有数,每行输出8个数
int count = 0; //计数器
for(int i =100;i<=300;i++){
if(i%5==0){
System.out.print(i+"\t");
//计数器+1
count++;
//换行的条件 每行输出8个
/*
//1.
if(count==8){
System.out.println(); //换行
count = 0; //计数器归零
}
*/
//2.
if(count%8==0){
System.out.println(); //换行
}
}
}
//请找出[100,300]之间能被5整除的所有数,每行输出8个数,每两个数之间用逗号隔开
System.out.println("--------------------------------------------");
System.out.println("--------------------------------------------");
System.out.println("--------------------------------------------");
count = 0; //计数器
for(int i =100;i<=300;i++){
if(i%5==0){
//即将要打印的数据是每行的第一个数据,第一个数据只打印数据值,不打印,
if(count==0){
System.out.print(i);
}else{
System.out.print(","+i);
}
//计数器+1
count++;
//换行的条件
if(count==8){
System.out.println(); //换行
count = 0; //计数器归零
}
}
}
}
}
for循环与while循环的区别
for 次数循环,确定区间范围,确定变量变化的情况,进一步确定要循环的次数
for(条件初始化;条件判断;条件变化){
重复执行的语句体;
}
-
while 条件循环
条件初始化;
while(条件判断){
重复执行的语句体;
条件变化;
}注意 : 循环之间都可以相互转换
while循环和do while循环的区别
条件初始化;
while(判断条件){
重复执行的语句;
条件变化;
}
条件初始化;
do{
重复执行的语句;
条件变化;
}while(判断条件);
do…while与while之间的区别就是:
do…while无论是否满足条件都至少执行一次
while满足条件执行不满足不执行
注意:
在使用while或者do..while循环的时候,不要丢掉条件变化
break与continue在循环之间的作用
break与continue
break:
作用 : 终止 结束
应用场景 : switch语句 循环中
continue :
作用 : 跳过当前这一次循环,直接进入到下一次循环
应用场景 : 循环中