Java初学者之流程控制

Posted r1chr1ch

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java初学者之流程控制相关的知识,希望对你有一定的参考价值。

ok,今天怀着懵逼的状态学完了流程过程,来过下流水账

第一个学的是Scanner类,这个类比较注意的是有俩类方法一种是nextLine,一种是next,这两个是不同的,next遇到空格就是停止,nextLine则是回车前面都算数,这个地方我纠结了半天,因为我想知道在什么状态下可以出发控制板写入,我现在的想法是,只要用了scanner的方法都会触发,有没有大佬看见了给小白解读一下orz

Scanner类铺垫完就开始流程控制了.老规矩,咱先分类.三种结构(struct)顺序结构,判断结构,循环结构,以及break,continue,goto三个关键字的区别

顺序结构:顾名思义,我觉得这个不用总结

判断结构:1.if 2.switch

先来解读一下if语句分为单选择,双选择和多选择

单选择语法点为;if(条件)      双选择:if(条件)else     多选择:if(条件)else if() ......else

再就是switch,这个有一个特征就是在JDK7以后可以用字符串,我看网课的那个老师带我们看了,顺便也告诉了我们字符串的本质是数字,他是利用了反编译,让我们看到代码最后会变成字符串的哈希值让后去寻找,废话少说,直接步入正题

switch语法只有一个 switch(已定义过的值)case x:执行语句;break;case y:执行语句;break .......这里的break是可选的,要根据实际情况来运用.不加break的代码会被case穿透

最后来写一下三个关键字:break,continue,goto三者的区别

break:是直接退出循环

continue:跳到当前循环

goto:是跳出当前循环到标签处循环

好的今天就到此结束了,明天我就要开始学习方法了

Java程序猿之流程控制与数组

  分支语句

  if括号里的只能是一个逻辑表达式,即这个表达式返回的值只能是true或false。

  代码块用花括号括起来,一个代码块通常被当成一个整体来执行(除非遇到return、break、continue等关键字,或者遇到异常)。

  if……else语句有一条基本规则:总是优先把范围小的条件放在前面处理。

  switch语句由一个控制表达式和多个case标签组成,和if语句不同的是,switch语句后面的控制表达式的数据类型只能是byte、short、char、int四种整数类型,枚举类型和java.lang.String类型(从Java 7才允许),不能是boolean类型。

switch (expression){
   case conditionl:
   {
     statement(s);
     break;  
   }         
   …………     
  default
  {
    statement(s);
  }
}

  每一个case标签后的每个代码块后都有一条break;语句,这个语句有极其重要的意义,Java的switch语句允许case后面没有break语句,但是这样做可能引入一个陷井,程序会一直执行下去。switch语句会先求出expression表达式的值,然后拿这个表达式和case标签后的值进行比较,一旦遇到相等的值,程序会执行case后面的代码,不再判断后面case、default标签的条件是否匹配。

  Java7增强了switch语句的功能,允许switch语句的控制表达式是java.lang.String类型的标量或表达式——只能是java.lang.String类型,不能使StringBuffer或StringBuilder这两种字符串类型。

  循环结构

  while语句

  while循环语法格式如下:

[init_statement]
while(test_expression);{
   statement;
   [iteration_statement];
} 

 

  while循环每次执行执行体前,先对text_expression循环条件求值,如果循环条件为true,则运行循环体部分。上面迭代语句总是位于循环体最后,只有当循环体执行之后,while循环才会执行迭代语句。

  while循环的循环体部分与迭代语句合并在一起,只有一行代码,可以省略后面的花括号,但不建议。如果省略掉花括号,那么循环条件控制到紧跟该循环条件的第一个分号处。

  使用while循环语句一定要保证循环条件有false的时候,否则这个循环将称为一个死循环。

int i= 0while (i < 10);{
    System.out.println("不停的死循环!" + i);
    }

  while循环条件后面一定要紧跟一个分号;while循环条件后面一定要紧跟一个分号;while循环条件后面一定要紧跟一个分号; 重要的事说三遍

  在java程序中,一个单独的分号表示一个空语句,不做任何事情的空语句。

 

  do……while语句

  do……while循环和while循环的区别在于,while循环是先判断循环条件,如果条件为真,则执行循环体;而do……while循环则先执行循环体,然后才判断循环条件,如果循环条件为真,则执行下次一次循环,否则中止循环。

[init_statement]
do{
   statement;
   [iteration_statement];
} while(test_expression);

 

  do……while循环的循环条件后必须有一个分号,这个分号表明循环结束。

  do……while循环的循环体至少会被执行一次。

  

  for循环

for ([init_statement]; test_expression; [iteration_statement]; ){
     statement;
    }

  for循环的循环迭代语句并没有与循环体放在一起,因此即使在执行循环体时遇到continue语句结束本次循环,循环迭代语句也是一样会得到执行。

  for循环的初始化语句只有一个,循环条件也只是一个简单的boolean表达式。实际上,for循环允许同时制定多个初始化语句,循环条件也可以是一个包含逻辑运算符的表达式 

for(int i = 0, j = 0; i < 10 && j < 10; i++, j++){
        statement
    }

  for循环循环体内可以修改循环变量,但这样可能会产生一个死循环,所以建议不要在循环体内修改循环变量(也叫循环计数器)的值,否则会增加程序出错的可能性。如果真的需要访问、修改循环变量,建议重新定义一个临时变量,先将循环变量赋值给临时变量,然后对临时变量的值进行修改。

  for循环圆括号内的两个分号是必须的,初始化语句、循环条件、迭代语句部分都是可以省略的。不过如果省略的循环条件,则这个循环条件默认为true,陷入死循环。

  可以将初始化条件定义在循环体之外,把循环迭代语句放在循环体内,这种做法类似于前面的while循环

int i = 0;
for(; i < 10;){
        System.out.println(i);
        i++;
    }

  把for循环的初始化语句放在循环之前定义还有一个作用:可以扩大初始化语句中所定义变量的作用域。在for循环里定义的变量,其作用域仅在该循环内有效,for循环中止之后,这些变量将不可被访问。如果需要在循环以外使用这些变量的值,就可以采用上面的做法。除此之外,还可以额外定义一个变量来保存这个循环条件的值。

int temp = 0;
for(int i = 0; i < 10; i++){
        statement
        //使用temp保存循环变量
        temp = i;
    }

  嵌套循环

  把一个循环放在另一个循环体内。形成嵌套循环,当程序遇到嵌套循环时,如果外层循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行——只是内层循环需要反复执行自己的循环体而已。当内存循环执行结束,且外层循环的循环体执行结束,则再次计算外层循环的循环条件,决定是否再次执行外层循环的循环体。

  

  使用break结束循环

  break用于完全结束一个循环,跳出循环体。

  break语句不仅可以结束其所在循环,还可以直接结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。

  Java中的标签就是一个紧跟英文冒号的(:)标识符。Java标签只有在循环体中才能使用。

//外层循环,outer作为标识符
outer;
for (int i = 0; i < 5; i++){
        for( int j = 0; j < 3; j++){
            System.out.println("打印j和i的值");
            if( j == 1 ){
                //跳出outer标签所标识的循环
                break outer;
                }
            }
    }

  break后的标签必须是一个有效的标签,即这个标签必须在break语句所在的循环之前定义,或者在其所在的循环的外层循环之前定义。break默认是结束其所在标签。

public class hh{
    public static void main(String[] args){
        //请注意outer后面跟的是英文冒号
        outer:
        for (int i = 0; i < 5; i++){
            for( int j = 0; j < 3; j++){
                System.out.println("打印j和i的值" + "i = " + i + "j = " +  j);
                if( j == 1 ){
                        //跳出outer标签所标识的循环
                    break outer;
                }
            }
        }
    }
}

  使用continue忽略本次循环剩下的语句

  continue后面也可以紧跟一个标签,用于直接跳过标签所标识循环的当次循环的剩下语句,重新开始下一次循环。

  

  使用return结束方法

  return关键字不是专门用来结束循环的,return的功能室结束一个方法。当一个方式执行到一个return语句时(return关键字后还可以紧跟变量,常量和表达式),这个方法将被结束。

 

  

 

 

 

 

  

 

 

  

  

 

 

以上是关于Java初学者之流程控制的主要内容,如果未能解决你的问题,请参考以下文章

Java程序猿之流程控制与数组

Java基础之流程控制

Java从入门到天黑|03JavaSE入门之流程控制

Java基础之流程控制语句

java之流程控制之if语句

java学习之流程控制语句(选择结构)