zoukankan      html  css  js  c++  java
  • java 基础 流程控制

    鄙人不才,基础不好,趁着闲时简单学习一下,仅作学习分享,如有不正确地方还请各位看客不吝指出。

    Java流程主要可以分为:
    顺序(可以按照正常顺序一步步往下运行的)
    选择(三元操作符[?:];if else;switch)
    循环(for;while;do while;)
    控制(break;continue;)

    顺序流程没啥好说的,代码没问题的话一般都可以按顺序运行

    选择流程中
        1.之前在论坛中有看的别人说三元操作符不会进行短路操作,这个说法其实是错误的
           例如

    int i = 1;
    int j = i==2 && ++i == 2?1:2;
    System.out.println(i);
    System.out.println(j);

        2.为什么有了三元操作符还要有ifelse呢?有人说三元操作符不能嵌套,这个显然是不正确。
           上面的例子第二行改成.

    int j = i==2 && ++i == 2?1:(i>3?3:2);

            也是可以正常运行的。可是这样做程序的可读性就很差了。个人认为ifelse主要是为了提高程序可读性存在的。

        3.效率方面,直接写程序观察运行时间是不靠谱的,这与你电脑运行时环境关系很大。但是我们可以用javap进行反编译进行查看的

    public class Test{
    	
    	public void test()
    	{
    		int i = 1;
    		int j;
    		j = i==1?1:2;
    	}
    	
    }

          首先运行 javac Test.java进行编译,然后运行javap -c Test 进行反编译。 得到如下结果

    Compiled from "Test.java"
    public class Test {
      public Test();
        Code:
           0: aload_0
           1: invokespecial #1                  // Method java/lang/Object."<init>":
    ()V
           4: return
    
      public void test();
        Code:
           0: iconst_1
           1: istore_1
           2: iload_1
           3: iconst_1
           4: if_icmpne     11
           7: iconst_1
           8: goto          12
          11: iconst_2
          12: istore_2
          13: return
    }


        4.关于switch,其实SUN对于switch一直在进行改进,有最开始的支持byte,short,char,int,到1.5的Enum,到1.7的String。可以用于筛选的条件逐渐增多,谁知道以后会不会加上Object呢?

    循环流程中

       1.for循环第一次执行做不做条件判断?

           这个问题平时真的不怎么注意,其实for循环再第一次执行的时候也会进行条件判读的,如果不满足条件一次都不会执行。

       2.while执行前进行判断如果判断不同过就不会执行。

       3.do while先执行一次,然后在做条件判断

       4.循环流程中要特别注意防止死循环

       5.如果有死循环编译会不会报错?

            从来没注意过吧?不会报错的!!运行时候也不会报错,等到真正消耗完系统资源的时候你就闹大了。还是小心为妙

    控制流程

       1.配合switch和循环流程使用,可以控制跳转
       2.配合标签在嵌套循环中使用可以控制循环流向

     

  • 相关阅读:
    iOS 开发网络篇—监测网络状态
    再杀掉app之后 删除NSUserDefault存在本地的数据
    iOS开发之duplicate symbols for architecture x86_64错误
    iOS中UITextField输入判断小数点后两位
    ios 适配iOS11&iPhoneX的一些坑
    iOS UITextView 设置 NSLinkAttributeName 属性,点击链接跳转
    iOS- UITextView与键盘回收与键盘遮挡输入框
    iOS 实现单个页面支持横竖屏,其他页面只能竖屏
    iOS最新Mac OS X 10.11之后 安装cocoapods及使用详解
    一种简单的登录加密方案
  • 原文地址:https://www.cnblogs.com/ssp2110/p/3797675.html
Copyright © 2011-2022 走看看