Java基础语法(下)
文章目录
一、if语句
概念: if语句是指编程语言中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if的返回值为真或假,可以用 bool 型变量进行存储,占用一字节。
-
if(表达式1){
语句1;
}
-
if(表达式1){
语句1;
}else if(表达式2){
语句2;
}
…
else(表达式n){
语句n;
}
注意:
-
if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
-
if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
-
一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
表达式 可以是 关系表达式、逻辑表达式,甚至是数值表达式 必须是返回布尔类型
每条if或else语句后面必须跟一个{}
Scanner sc=new Scanner(System.in); int i=sc.nextInt(); if(i>60){ if(i>70) System.out.println("良好"); System.out.println("及格"); } else System.out.println("不及格"); System.out.println("lalalallal");
运行结果:
-
if条件后
加大括号{}: 控制{}内的全部语句
不加大括号{}; 控制最近的一条语句
二、switch语句
switch…case
switch(表达式){
case value 1:
语句1; [break;]
…
case value n:
语句n; [break;]
default:缺省语句;[break;]
}
break:结束语句,跳出当前的switch/for/while/do while,多层循环时,只能跳出一层循环
default:缺省语句,当没有符合表达式结果的case时,执行default后的语句
多分支语句,根据表达式的结果与case后的值是否相等来执行相应的语句
若没有符合的,则执行default后的语句break
int score=76;
switch(score/10)
{
case 6:
System.out.println("及格");break;
case 7:
case 8:
System.out.println("良好");break;
case 9:
case 10:
System.out.println("优秀");break;
}
运行结果:
当case 后的值与结果相符时,若没有break语句来结束,则会继续向下执行,直到遇到break为止
注意事项:
- case 后的值不能重复
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wt5MqgWe-1618314518737)(C:/Users/lanlei/AppData/Roaming/Typora/typora-user-images/1618275197542.png)]
- switch(表达式) 表达式的合法数据
switch(true){
case true:
System.out.println("true");break;
case false:
System.out.println("false");break;
}
switch(2.5){
case 2.5:
System.out.println("true");break;
case 3.8:
System.out.println("false");break;
}
此时提示错误:
Incompatible types. Found: ‘boolean’, required: 'char, byte, short, int, Character, Byte, Short, Integer, String, or an **enum ** ’
此处的表达式只能是(基本数据类型)char,byte,short,int,(类)Character,Byte,Short,Interger,String(JDK7以后),enum(枚举).而不能是long,double,float,boolean等.
if与switch的使用场景
switch可以实现的if也可以实现,但if可以实现的switch不一定能实现(switch不能用boolean类型)
-
当判断等值if||switch都可使用,但switch效率更高
-
对区间范围/结果为布尔类型进行判断,使用if
-
对于简单的if语句,可以用条件运算符代替(int max=a>b? a : b)
三、循环结构
1 for循环
for(表达式1;表达式2;表达式3){
循环体(语句)
}
for循环执行过程
计算表达式1–>判断表达式2–>若表达式2的值为true–>则执行循环体–>计算表达式3(第一次循环)
…
-->判断表达式2–>若表达式2的值为true–>则执行循环体–>计算表达式3(第n次循环)
//起始语句i=1000,循环判断条件;i>900时执行循环体,直到i>900为false时停止循环
for(int i=1000;i>900;i--){
i-=7;
System.out.println("1000-7="+i);
}
运行结果:
增强for循环
foreach语句(for循环的特殊简化版)
//for语句
int [][] a ={{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
//foreach语句
int [][] a ={{1,2,3},{4,5,6},{7,8,9}};
for(int[] b:a){
for(int c:b){
System.out.print(c+"\t");
}
System.out.println();
}
运行结果:
可见遍历时foreach与for的效果相同, 且foreach更为简洁一些
2. while / do while
2.1 while
特点:先判断(表达式真值),为真时再执行(循环体)
while(逻辑表达式){循环体}
int i=1000;
//先判断循环条件,当i>900为true时执行循环体,直至不满足i>900为止结束循环
while(i>900){
i-=7;
System.out.print(i+" ");
i--;
}
运行结果:
2.2 do while
特点:先执行(一次),再判断(表达式真值)
do{循环体}while(逻辑表达式);
int i=1000;
do{
i-=7;
System.out.println(i);
i--;
}while (i>1000);
//不管表达式真假,先执行一次循环体,再判断是否符合循环条件
运行结果:
可以看到,尽管不满足do while中的条件,循环体依然执行了一次
3.循环嵌套
for循环嵌套
//打印乘法口诀表
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+" \t");// "\t" 制表符
}
System.out.println();//每打印完一次i后换行
}
运行结果:
while循环嵌套
int i=6;
while(i>0){
do{
i--;
System.out.println("内层循环"+(6-i));
if(i==3){
break;
//i=5,4,3时执行循环体,i=3时跳出do while. 内层循环循环执行三次
}
}while (i>2);
i--;
System.out.println("外层循环"+(3-i));
if(i==1){
break;
/*
i=2时执行一次循环
i=2不符合do while的执行条件,但do while总是先执行一次(i--)i=1,再判断条件是否符合(6-1=5)
i=1时,执行一次循环,结束
*/
}
}
运行结果:
4.break/continue
break : 终止某个语句块的执行.用在循环语句体中,可以强行退出循环
int [][] a={{1,2,3},{4,5,6}};
for (int i = 0; i <a.length; i++) {
for (int j = 0; j <a[i].length; j++) {
if(i==j){
continue;//遍历时遇到a[1][1] a[2][2]...跳过下面语句重新开始循环
} else if(j>i){
break;//遇到a[0][1],a[0][2] a[1][2],结束循环,但只能结束内乘循环
}else{
System.out.print(a[i][j]+"\t");
}
}
System.out.println("换行"+i));
}
/*
i=0 j=0-->continu-->
j=1-->break-->输出"换行0"
j=2-->continue-->
i=1 j=0-->输出a[1][0]=4-->
j=1-->continue-->
j=2-->break-->输出"换行1"
*/
运行结果:
break label:在要终止的代码块前写上label,在终止条件后写break label(label自定义)
可用break label跳出多层循环
int [][] a={{1,2,3},{4,5,6}};
out: for (int i = 0; i <a.length; i++) {
for (int j = 0; j <a[i].length; j++) {
if(i==j){
continue;//遍历时遇到a[0][0] a[1][1] ...跳过下面语句重新开始循环
} else if(j>i){
if(i==1&&j==2){
break out;//使用为break label,可以终止多层循环(a[1][2])
}
break;//遇到a[0][1],a[0][2] ,结束循环,但只能结束内乘循环
}else{
System.out.print(a[i][j]+"\t");
}
}
/*
i=0 j=0 continue
j=1 break(结束内层循环) 输出"换行1"
i=1 j=0 输出4
j=1 continue
j=2 break out 结束整个循环
*/
System.out.println("换行"+(i+1));
}
运行结果:
本人新✋,初来乍到,:✒️此拙作以记录学习中的知识点滴,若能帮助到同在学习的新手,不甚荣幸.若有不对的地方,还请各位大佬斧正,不吝赐教🙏🙏🙏!