Java基础学习第四天——选择与循环结构

来源:互联网 发布:linux http管理 编辑:程序博客网 时间:2024/05/16 06:08
文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.23 lutianfei none

        • 选择结构switch语句
          • 补充知识点键盘字符串输入
      • 循环结构
        • for结构循环
          • 典型应用
      • while循环语句
      • dowhile循环语句
      • 跳转控制语句


选择结构(switch语句)

  • switch语句格式:
switch(表达式) {        case1:          语句体1;         break;      case2:          语句体2;          break;      …      default:           语句体n+1;          break; //可以省略  }
  • 格式解释

    • switch表示这是switch语句
      • 表达式的取值:byte,short,int,char
      • JDK**5**以后可以是枚举
      • JDK**7**以后可以是String
    • case后面跟的是要和表达式进行比较的值
    • 语句体 部分可以是一条或多条语句
    • break表示中断,结束的意思,可以结束switch语句
    • default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
  • 执行流程

    • 首先计算出表达式的值
    • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
    • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

  • 注意事项

    • case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
    • default可以省略吗?
      • 可以省略。一般不建议因为其作用是对不正确的情况给出提示。除非判断的值是固定的。(单选题)
    • break可以省略吗?
      • 可以省略,一般不建议。否则结果可能不是你想要的
    • default的位置一定要在最后吗?
      • 可以出现在switch语句任意位置。
    • switch语句的结束条件
      • 遇到break
      • 执行到程序的末尾
  • 经典面试题:

int x = 2;int y = 3;switch(x){  default:  y++;  case 3:  y++;  case 4:  y++;}System.out.println("y="+y);
  • 分析:
    • 先跳转到default : y = 4
    • 再跳转到case 3: y = 5
    • 再跳转到case 4: y = 6
    • 已执行到swith尾部,跳出 所以y = 6

补充知识点:键盘字符串输入
  • String s = sc.nextLine();

  • if和switch应用场景区分:

    • if语句使用场景:
      • 针对结果是boolean类型的判断
      • 针对一个范围的判断
      • 针对几个常量值的判断
    • switch语句使用场景:
      • 针对几个常量值的判断

循环结构

  • 循环语句的组成
    • 初始化语句:
      • 一条或者多条语句,这些语句完成一些初始化操作。
    • 判断条件语句:
      • 这是一个boolean 表达式,这个表达式能决定是否执行循环体。
    • 循环体语句:
      • 这个部分是循环体语句,也就是我们要多次做的事情。
    • 控制条件语句:
      • 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

for结构循环

  • for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句) {         循环体语句;    }
  • 执行流程
    • A:执行初始化语句
    • B:执行判断条件语句,看其结果是true还是false
      • 如果是false,循环结束。
      • 如果是true,继续执行。
    • C:执行循环体语句
    • D:执行控制条件语句
    • E:回到B继续
典型应用
  • 1~100间数据之和
for(int x=1;x<=100;x++){    sum +=x;}


  • 1~100间偶数和
//方式1for(int x=1;x<=100;x++){    if(x%2 == 0){        sum +=x;    }//方式2for(int x=0;x<100;x+=2){    sum +=x;}}


* 求5的阶乘

int jc=1;for(int x=1;x<=5;x++){    jc*=x;}
  • 在控制台输出所有的“水仙花数”(其各位数字的立方和等于该数本身,eg:153 = 1*1*1 + 5*5*5 +3*3*3)
class ForDemo{    public static void main(String[] args){        for(int x=100;x<1000;x++){            int ge = x%10;            int shi= x/10%10;            int bai= x/10/10%10;            if(x ==(ge*ge*ge + shi*shi*shi + bai*bai*bai)){                System.out.println("shuixianhua:"+x);            }        }    }}


while循环语句

  • while循环语句格式:
    • 基本格式
   while(判断条件语句) {         循环体语句;   }
* 扩展格式
   初始化语句;   while(判断条件语句) {         循环体语句;         控制条件语句;    }
  • for循环语句和while循环语句可以等价转换,但还是有些小区别的
    • 使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
    • 场景区别:
      • for循环适合针对一个范围判断进行操作
      • while循环适合判断次数不明确操作


do…while循环语句

  • 基本格式
   do {         循环体语句;   }while((判断条件语句);
  • 扩展格式
   初始化语句;   do {         循环体语句;         控制条件语句;    } while((判断条件语句);
  • 练习题:99乘法表:
class ForTest{    public static void main(String[] args){        for(int i=1;i<=9;i++){            for(int j=1;j<=i;j++){                System.out.print(j+"*"+i+"=" +i*j+";\t");            }            System.out.println();        }    }}
  • 注:
    • \t:Tab键
    • \r:回车
    • \n:换行


跳转控制语句

  • Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情。为了弥补这个缺陷,Java就提供了break,continue和return来实现控制语句的跳转和中断。

  • break 中断

  • continue 继续
  • return 返回

  • break的使用场景:

    • 在选择结构switch语句
    • 循环语句
  • break的作用:

    • 跳出单层循环
    • 跳出多层循环
      • 带标签的跳出
      • 格式:标签名: 循环语句
      • 标签名要符合Java的命名规则
  • Eg:跳出多层循环

wc:for(int x=0;x<3;x++){    nc:for(int y=0;y<4;y++){        if(y==2){            break wc; //跳出外出循环。        }    }}


  • continue的使用场景
    • 循环语句
    • 离开使用场景的存在是没有意义的
  • continue的作用:

    • 单层循环对比break,然后总结两个的区别
      • break 退出当前循环
      • continue 退出本次循环,进入下一次执行。
  • Eg:

class ContinueDemo{    public static void main(String[] args){        for(int x=0;x<10;x++){            if(x==3){                //break;                continue;            }            System.out.println(x);        }    }}//当使用break时,输出结果:0,1,2//当使用continue时,输出结果0,1,2,4,5,6,7,8,9


  • return 使用场景

    • return关键字不是为了跳转出循环体,而是为了结束一个方法,也就是退出一个方法。跳转到上层调用的方法。
  • Eg:

class ReturnDemo{    public static void main(String[] args){        for(int x=0;x<10;x++){            if(x==2){                System.out.println("Exit");                //break;                //continue;                return;            }            System.out.println(x);        }        System.out.println("Over");    }}//break结果:0,1,Exit,Over//continue结果:0,1,Exit,3,4,5,6,7,8,9,Over//return结果:0,1,退出(直接退出了main方法)
1 0
原创粉丝点击