Java编程思想(四)—— 控制执行流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Alexshi5/article/details/80905925

一、true和false

        java不允许拿一个数字来作为布尔值使用,但在C/C++中是允许的,如下:

void example15(){
	if(1){//在C语言中,1代表的是真,0代表的是假,C++也是一样
		printf("true");
	}else{
		printf("false");
	}
}

        java中必须使用一个条件表达式将其转换成布尔类型值。当然,也可以直接使用布尔值,如下:

public void example1(){
        if(true){//直接使用真假值
            System.out.println("true");
        }

        int t = 3;
        if(t>3){//条件表达式
            System.out.println("true");
        }
    }

二、if-else

if-else是控制程序流程的最基本的形式,如下:

public void example2(){
        /**
         * if-else
         */
        int score = 90;
        if(score>0){
            System.out.println("你及格了!");
        }else {//else语句是可以省略的
            System.out.println("你不及格!");
        }

        /**
         * if-else-if-else
         */
        int week = 2;
        if(week == 1){
            System.out.println("今天是星期一");
        }else if(week == 2){
            System.out.println("今天是星期二");
        }else {
            //......
        }
    } 

三、迭代

1、while

 public void example3(){
        int i = 0;
        int j = 0;
        while (i<5){
            j += i;
            i++;
        }
        System.out.println(j);//0+1+2+3+4=10
    }

2、do-while

@Test
    public void example4(){
        int i = 0;
        int j = 0;
        do{
            j += i;
            i++;
        }while (i<5);
        System.out.println(j);//0+1+2+3+4=10,它跟while的区别是它先执行一次
    }

3、for

/**
     * 从1加到100
     */
    @Test
    public void example5() {
        int j = 0;
        for (int i = 1; i <= 100; i++) {
            j += i;
        }
        System.out.println(j);//5050
    }

4、foreach

public void example6(){
        /**
         * foreach数组
         */
        int[] nums = {10,20,30,40,50};
        int result = 0;
        for(int i:nums){
            result += i;
        }
        System.out.println(result);//150

        /**
         * foreach list集合
         */
        List<String> strings = new ArrayList<>();
        strings.add("张三");
        strings.add("李四");
        strings.add("王二");

        String str = "这个集合中有三个人,分别是:";
        for(String s:strings){
            str += s + ",";
        }
        str = str.substring(0,str.length()-1);
        System.out.println(str);//这个集合中有三个人,分别是:张三,李四,王二

        /**
         * foreach map集合
         */
        Map<String,String> map = new HashMap<>();
        map.put("张三","20");
        map.put("李四","25");
        map.put("王五","19");
        for(String s:map.keySet()){
            System.out.println(s + "的年龄是:" + map.get(s) + "岁!");
        }
        /**
         * 李四的年龄是:25岁!
         * 张三的年龄是:20岁!
         * 王五的年龄是:19岁!
         */
   }

5、return

        return关键字有两个用途:一是指定一个方法返回什么值,二是导致当前方法退出。如果在返回void的方法中没有return语句,那么在该方法的结尾处会有一个隐式的return。

 @Test
    public void example9() {
        Boolean b = this.back1(10, 5, 20);
        System.out.println(b);

        Boolean b1 = this.back1(25, 5, 20);
        System.out.println(b1);
        
    }

    //判断是否在两数之间
    private Boolean back1(Integer num, Integer begin, Integer end) {
        if (num >= begin && num <= end) {
            return Boolean.TRUE;
        }
        return Boolean.FALSE;
    }

6、break和continue

        break用于强制退出循环,不执行循环中的剩余的语句,而continue是中止当前循环,继续下一次循环。

@Test
    public void example10(){
        System.out.println(useBreak(10));
        System.out.println(useContinue(10));
    }

    private int useBreak(int num){
        int result = 0;
        for(int i=1;i<num;i++){
            if(i%5 == 0){
                break;
            }
            result += i;
        }

        return result;//1+2+3+4=10
    }

    private int useContinue(int num){
        int result = 0;
        for(int i=1;i<num;i++){
            if(i%5 == 0){
                continue;
            }
            result += i;
        }

        return result;//1+2+3+4+6+7+8+9=40
    }

7、java中的标签与goto

        goto是源码级上的跳转,这使其招致了不好的声誉,如果一个程序总是从一个地方跳到另外一个地方,这就很难识别程序的控制流程。事实上,真正的问题并不在于使用goto,而是在于goto的滥用,在少数情况下,goto是组织控制流程的最佳手段,goto可以用于深层嵌套循环的跳出。尽管goto仍是java中的一个保留字,但在语言中并未使用它。

        java使用标签、break和continue关键字进行跳转的操作,带标签的break会中断循环并跳出标签所指的循环,带标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环。

@Test
    public void example11(){
        //三个小组,每个小组5名学生
        int[][] arr = {{65,80,92,85,55},{58,65,76,52,66},{67,63,52,85,76}};
        int result = 0;
        out:for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                if(i==0){//结束外层循环的第一次循环,进入到下一次循环
                    continue out;
                }
                if(i==2){//外层循环进入到第三次时,直接结束外层循环
                    break out;
                }
                result = result>arr[i][j]?result:arr[i][j];
            }
        }

        System.out.println(result);//76
    }

8、switch

        每个case是一个tag,当匹配到tag时会忽略其他tag然后顺序执行代码体,直到遭遇break或者}

@Test
    public void example12(){
        int i=9;
        switch (i) {
            default:
                System.out.println("default");
            case 0:
                System.out.println("zero");
            case 1:
                System.out.println("one");
            case 2:
                System.out.println("two");
        }
		/*
		 * default
		 * zero
		 * one
		 * two    分析:每个case是一个tag,当匹配到tag时会忽略其他tag然后顺序执行代码体,直到遭遇break或者}
		 */

    }

猜你喜欢

转载自blog.csdn.net/Alexshi5/article/details/80905925