Java基础语法(下)

Java基础语法(下)

一、if语句

概念: if语句是指编程语言中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if的返回值为真或假,可以用 bool 型变量进行存储,占用一字节

  1. if(表达式1){

    语句1;

    }

  2. 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;
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F4n4OEAm-1618314518733)(img/p2.jpg)]

当case 后的值与结果相符时,若没有break语句来结束,则会继续向下执行,直到遇到break为止

注意事项:

  1. case 后的值不能重复

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wt5MqgWe-1618314518737)(C:/Users/lanlei/AppData/Roaming/Typora/typora-user-images/1618275197542.png)]

  1. 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);
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NEVlrfEe-1618314518747)(img/p4.jpg)]

增强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

特点:先判断(表达式真值),为真时再执行(循环体)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MIYVOQG2-1618314518753)(img/p8.jpg)]

while(逻辑表达式){循环体}

int i=1000;
//先判断循环条件,当i>900为true时执行循环体,直至不满足i>900为止结束循环
while(i>900){
    i-=7;
    System.out.print(i+" ");
    i--;
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMXfc0Ft-1618314518755)(img/p6.jpg)]

2.2 do while

特点:先执行(一次),再判断(表达式真值)

do{循环体}while(逻辑表达式);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3IqMOMzt-1618314518757)(img/p9.jpg)]

int i=1000;
do{
    i-=7;
    System.out.println(i);
    i--;
}while (i>1000);
//不管表达式真假,先执行一次循环体,再判断是否符合循环条件

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gPuw6Q8Y-1618314518760)(img/p10.jpg)]
可以看到,尽管不满足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后换行
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Lsy0yj7-1618314518763)(img/p11.jpg)]

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时,执行一次循环,结束
      */
    }
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DtvW7crP-1618314518766)(C:/Users/lanlei/AppData/Roaming/Typora/typora-user-images/1618304410449.png)]

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"
*/

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-egk5vxN5-1618314518770)(C:/Users/lanlei/AppData/Roaming/Typora/typora-user-images/1618312403235.png)]

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));
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eY7DQYJt-1618314518772)(C:/Users/lanlei/AppData/Roaming/Typora/typora-user-images/1618313578591.png)]
本人新✋,初来乍到,:✒️此拙作以记录学习中的知识点滴,若能帮助到同在学习的新手,不甚荣幸.若有不对的地方,还请各位大佬斧正,不吝赐教🙏🙏🙏!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值