4.基础(二):流程控制

原创
2013/10/04 11:54
阅读数 42

条件语句和循环语句

条件语句:if、switch;

if语句中的表达式必须是boolean型的,if和else后面的 “{}”可以没有语句,当if后面的语句序列有且仅有一条语句时,外面的大括号可以省略(不建议省略);

<!-- lang: java -->
//在真实的项目中,应当注意if语句后面的{}符号
               if (1+1 == 2)
              System.out .println( "第一条语句") ;
              System. out.println( "第二条语句" );
              System. out.println( "第三条语句" );

分析: 以上的程序将会输出 三条语句,如果将if表达式里的 == 改成 != ,则第一条语句不会输出,其他语句照样输出。 if后面如果省略了外面的大括号,则只表示第一句语句序列是属于if分支的,而其余的是属于其他块作用域的(类或方法); 所以如果省略了大括号,需要注意它与else的嵌套使用,如上面的程序,else只能写在第一条语句之后(之前和第二条之后都会出错); 同时else如果也省略了外面的大括号,那么跟if后面的一样,后面的复合语句中只有一条属于else的块作用域。

           if()else(){
                if(){};
                }

switch语句的格式结构:

<!-- lang: java -->
//switch语句的基本格式
              switch ( 判断值) {
              case 数值1:
                   满足此数值时执行的语句 ;
                   [ break ;]
              case 数值2:
                   满足此数值时执行的语句 ;
                   [ break ;]
                     ....
              default:
                   所有条件都不满足时执行的语句 ;
                   [ break ;]

switch语句中:

1 .表达式必须是整型(byte,short,int,long),字符型(char);
2. JDK1.7新增了对字符串类型(String)的支持;
3. case里的值必须跟switch语句的数据类型一致,且多条case之间不能出现数值重复;
4. default语句可选,它用于处理没有一个case语句满足时才执行,如果它不存在,而且case语句中的值都不满足时,switch不做任何处理;
5. case分支语句的末尾如果没有break关键字,那么将触发多个case分支。

<!-- lang: java -->
//注意缺少了break关键字所触发的语句
         int i = 3;
         switch(i){
         case 1 :
              System. out.print(1);
         case 2 :
              System. out.print(2);
         case 3 :
              System. out.print(3);
         case 4 :
              System. out.print(4);
         case 5 :
              System. out.print(5);
               break;
         case 6 :
              System. out.print(6);
         default :
              System. out.print( "helloworld");
        }

      /* 分析:以上程序会打印出 345 ,
        * 它从case 3 开始匹配,直到 case 5 语句里break停止,
        * 如果没有break,那么 6 和 default的"helloworld" 也会执行;
        *  如果此时把default语句块放在 case3 之前,则不会执行;
        */

再换一种比较极端的情况,如:

<!-- lang: java -->
    //注意default语句的执行情况
        int i = 7;
         switch(i){
         default :
              System. out.println( "helloworld");
         case 1 :
              System. out.println(1);
         case 2 :
              System. out.println(2);
         case 3 :
              System. out.println(3);
        }

      /* 分析:以上程序会打印出所有的语句.
        * 如果不改变 i 的值,而case 语句一样没有匹配的常量值,
        * 那么把default 放在 case 2 之后,case 1 和 case 2 都不会执行;
        */

break和continue的区别:(注:两者可用于所有循环语句,break可用于switch语句)
break:直接跳出循环,终止整个循环体;
continue:停止当前循环,继续执行后面的循环,不会终止整个循环;

循环语句:for、while;

while循环: 1. 一定要有循环的结束判断; 2. 每次循环体执行的时候,循环条件要求修改。

for循环:for循环的两种写法,两种实现的是一样的功能。不成文的规则:for语句的三个部分应该对同一个计数器变量进行初始化、检测和更新;

第一种: for (循环的初始值 ; 循环的判断条件 ; 循环条件的修改) { 循环体 ; }

第二种: 循环的初始值 for ( ; 循环的判断条件 ; ) { 循环体; 循环条件的修改; }

跟if语句一样,当for后面的语句序列有且仅有一条语句时,外面的大括号可以省略(不建议省略);

<!-- lang: java -->

              for (int j = 0; j < 3; j++)
              System. out.println(j);
              System.out.println(j);   //这里继续用for语句里定义的变量则会报错,因为该语句块已经不再for循环体的范围

同理,下面将是一个死循环(跟while循环一样,这中for语句几乎不存在可省略大括号的情况):

<!-- lang: java -->

             int j = 0;
              for (; j < 3; )
                   System. out.println(j);
                   j++;

JDK5.0之后新增了for each循环(又称通用for循环):是for循环的加强版,主要用于对数组和集合的迭代; 这种循环的好处是使循环语句更加简洁、更不容易出错(不用关心数组下标),缺点是不能直接访问一个具体的小标值,所以不存在可以取代传统的for语句的那些说法;

                           for (数据类型 变量 : 数组 | 集合) {
                                    // 操作代码
                }

例如for(int element : a) { .... } 这个循环的读法:循环 a 中的每一个元素(for each element in a).——(核心技术)

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部