流程控制语句

 

1 if语句与三元运算符

 

1.1 第一种格式

 

public static void if1(){
        int x = 3;
        //if后面必须是条件表达式结果为boolean类型
        if(x>1){
            System.out.println("yes");
        }
        System.out.println("over");
        //如果if控制的只有一条语句那么括号可以省略,
        if (x<1)
            System.out.println("HO");//if只控制里他最近的一条语句,如果要控制多条语句要用{}括起来
        System.out.println("NO");//该语句跟if没有关系,注意代码的层次感,不要将代码缩进
    }

 

1.2 第二种格式

 

 

public static void if2(){
        int y = 4;
        if(y>1){
            System.out.println("yes");
        }else{
            System.out.println("over");
        }
}

对于运算完有结果直接输出的可以用三元运算符来写

 

 

1.3 三元运算符(问号表达式)

 

    好处:可以简化if else代码。   if else 结构简写格式:变量 = (条件表达式)?表达式1:表达式2;
    弊端:因为是一个运算符,所以运算完必须要有一个结果

    如:

     String y;
     y = (4>7)?"yes":"no";
     System.out.println(y);

int a=9,b;
b = (a>1)?100:300;


if(a>1)
    b=100;
else
    b=300;
//这种运算完有结果的可以用三元运算符比较简单
public class twentyNine {
    public static void main(String[] args) {
        int num = 5,b;
        b = num>9? ++num : --num;
        System.out.println(b);
        
    
        Scanner input = new Scanner(System.in);
        
        int score = input.nextInt();
        
        String s = score>=60? "及格" : "不及格";
        
        System.out.println("你的成绩:"+s);
    }
}

1.4 第三种格式

 

public static void if3(){
        int n = 3;
        if(n>1)
            System.out.println("a");//只要有一个满足程序就结束,都不满足执行else最后结束
        else if (n>2)
            System.out.println("b");
        else if (n>3)
            System.out.println("c");
        else
            System.out.println("d");
    }

 

 

2 while循环语句

 

    为了简化代码,让代码执行很多次

2.1 第一种格式:

 

    while:先判断条件,只有条件满足才执行循环体

 

int x = 4;
        while(x<8)//如果后面加了;号就会一直判断x<8,(这里是条件表达式,结果一定要是boolean类型,即结果一定要么是真ture要么是假false)
        {
           System.out.println("x="+x);
           x++;
           //System.out.println("x="+x++);//可以代替上面的 两条语句  该句既可以打印出x的值又可以将x自增
        }//没加括号只能控制最近的一条语句

 

2.2 第二种格式:

 

    do while:无论条件是否满足先执行循环体一次后再判断条件,条件满足在继续执行循环体(循环体至少执行一次)

 

 int x = 4;
        
        do{
            System.out.println("x="+x);
            x++;//x自增后变成5后,再执行下面判断x是否小于8
        }while (x<8);

 

 

 

3 for循环语句

 

 

    for循环的格式:

    for (初始化表达式;循环条件表达式 ;循环后的操作表达式 ){
       执行语句
        }

public class ForDemo {
    public static void main(String[] args) {
        
        //int x = 3;只有程序读到这时才在内存中开辟空间,而且只要for循环结束内存空间就会被释放。
        //第一个只要是合法的表达式就行,第二个一定要是条件表达式
        for (int x = 3; x<8 ; x++ ){
            System.out.println("x="+x);
            //x只在该括号内有效
        }
        //System.out.println("x======="x);//编译错误,找不到x这个变量
        
        
        int y =3;
        while(y<8)
        {
            System.out.println("y="+y);
        }
        System.out.println("y======="+y);//结果可以打印出y的值
        
        
        /*
        1.变量有自己的作用域,对应for来说,如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句中有效
        for语句执行完毕,该变量在内存中被释放

        2.for和while可以进行互换,用哪个都可以,但是如果需要定义循环增量,用for合适些,比较节省内存
        */
    }

}

    for循环使用时常见的问题:

 

for (System.out.println("a");System.out.println("b") ;System.out.println("c") ){
            System.out.println("d");
        }
        //没有结果,因为条件表达式既不是真也不是假所以没结果
public class ForTest1 {
    public static void main(String[] args) {
        int x =1;
        for (System.out.println("a");x<3 ;System.out.println("c") ){
            System.out.println("d");
            x++;//也可以放在for括号后面,用逗号隔开就行    
        }
        //结果是:a d c d c
        //for(这里可以多表达式只要用,隔开)    
    }
}

 

 

 

无限循环的最简单表现形式:

for (; ; ){}//对于for语句条件表达式只要不写默认就是true

while(true){}

 

4 switch分支语句

 

4.1 swithc特点:只接受byte,shotr,int,char 

    语句的定义顺序可以随意的,但执行顺序还是从第一个case开始

 

public class SwitchDemo {
    public static void main(String[] args) {
        int x = 4;

        switch (x) {
            case 1:
                System.out.println("a");
                break;
            case 2:
                System.out.println("b");
                break;
            case 3:
                System.out.println("c");
                break;
            case 4:
                System.out.println("d");
                break;//遇到满足条件的就执行该语句并跳出switch语句
            default:
                System.out.println("e");
                break;//可以省略不写,遇到括号就会结束
                
            }
    }
}

 

 

 

4.2 使用switch需注意的地方:

 

    无论default放在什么位置,运算都是从第一个case开始,所有case判断完才执行default
    所有case不符合,执行default,之后没有break继续执行下面的语句不再判断case,只执行语句,直到遇到break或括号结束switch语句

public class SwitchDemo {
    public static void main(String[] args) {
        int x = 4;
        switch(x)
        {
            default:
                System.out.println("e");
                //break;
            case 1:
                System.out.println("a");
                //break;
            case 2:
                System.out.println("b");
                break;
            case 3:
                System.out.println("c");
                break;
        }
    }
}

4.3 与if语句的比较

    什么时候用if  什么时候用switch(if和switch语句很像 具体什么场景下 应用那个语句呢)

    1、如果具体数值不多而且符合byte  short int  char这四种类型

    2、虽然两个语句都可以使用,建议使用switch语句,因为效率稍高

    3、其他情况:对区间判断,对结果为boolean类型判断使用if  if的使用范围更广

 

5 foreach循环语句:

5.1 foreach介绍

 

    1、格式:

     for(类型 变量名称:被遍历数组或集合){
        其他操作(输出操作)
     }

    

    2、作用:

     主要是用于简化书写

 

 

 

5.2 foreach循环语句遍历数组:

 

public class oneHundredAndEight_oneHundredAndNine {
    public static void main(String[] args) {
        String[] names = {"萌萌","纯纯","爱爱","凤凤","梦梦"};
        
        for(String x:names){
            System.out.print(x+" ");
        }
    }
}
public class ForEachDemo {
    public static void main(String[] args) {
        int[] arr = {3,5,6,7};
        for (int i : arr ){
            System.out.println(i);
        }
    }
}

 

 

 

5.3 foreach循环语句遍历集合

 

    List集合有两种取出方式,一种是迭代器,和for循环,用get()方法按着角标取出元素
    Set集合只有一种取出方式就是迭代器

    凡是支持迭代器的集合都可以使用高级for

    对集合进行遍历,只能获取元素,但是不能对集合进行过多的操作

    迭代器除了遍历还可以对集合中的元素进行remove
    如果是ListIterator还可以在遍历过程中对集合进行增删改查的动作

import java.util.ArrayList;

public class ForEachDemo {
    public static void main(String[] args) {
        ArrayList<String> al = new ArrayList<String>();

        al.add("abc2");
        al.add("abc3");
        al.add("abc1");
        /*
        for (Iterator<String> it = al.iterator() ;it.hasNext() ; ){
            System.out.println(it.next());
        }
        */

        for(String s : al){
            //s = "kk";//s不会改变集合中的元素,只能对集合中的元素取出,不能做修改动作
            System.out.println(s);
        }
        System.out.println(al);//结果还是原集合
    }
}

5.4 传统for和高级for的区别:

    1、传统for:可以完成对语句执行很多次,因为可以定义控制循环增量和条件

    2、高级for有一个局限性,必须有被遍历的目标,而且可能会产生很多的垃圾,在一些内存比较紧张的项目中不建议使用,比如在安卓程序中,建议在遍历数组的时候还是希望使用传统for,因为传统for可以使用角标

    3、高级for只能遍历单例集合,要变量双列集合(如Map集合),可以将Map集合变成单例集合再使用高级for

import java.util.HashMap;

public class ForEachDemo {
    public static void main(String[] args) {
        HashMap<Integer,String> hm = new HashMap<Integer,String>();
        hm.put(1,"a");
        hm.put(2,"a");
        hm.put(3,"a");
        //先用keySet或entrySet方法变成Set集合,在使用高级for
        for (Integer key : hm.keySet()) {
            String value = hm.get(key);
            System.out.println(key+"...."+value);
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值