zoukankan      html  css  js  c++  java
  • Java的流程控制结构,细节详解

    位运算符

    &与 |或 ^异或 <<左移 >>右移 >>>无符号右移  ~取反

    注意:位运算是针对整数运算的

    int i = 6,j = 10;

    方式一:利用第三方变量

    int k = i;

    i = j;

    j = k;

    方式二:利用加减法

    i = i + j;

    j = i - j;--->j = i + j - j;-> j = i;

    i = i - j;--->i = i + j - i;-> i = j;

    方式三:异或运算

    i = i ^ j;

    j = i ^ j;---> j = i ^ j ^ j;-> j = i;

    i = i ^ j;---> i = i ^ j ^ i;-> i = j;

    i^=j;j^=i;i^=j;

    为什么第三种方式的效率更高却是第一种方式用的更广?

    第一种方式的可阅读性更高;第三种方式只能用于运算整数,第二种方式可以用于运算数值型但是不能用于交换其他类型的值例如字符串类型,而第一种方式可以交换任意一种类型的值

     


    流程控制

    顺序结构

    从上倒下、从左到右一次运行

    分支结构

    判断结构

    if(逻辑值){

    代码块;

    }

     

    如果代码块只有一句,{}可以省略不写

    if(逻辑值){

    Code1;

    } else {

    Code2;

    }

     

    练习:获取较大的数

    if(逻辑值1){

    Code1;

    } else if(逻辑值2) {

    Code2;

    } else {

    Code3;

    }

    练习:输入月份,输出季节---3-5---Spring,6-8-Summer,9-11-Autumn,12-2-Winter

    选择结构

    switch(表达式){

    case 情况1 : Code1;break;

    case 情况2 : Code2;break;

    ……

    default:Code;break;

    }

    注意:

    1.表达式的结果是byte/short/int/char

    2.从JDK1.7开始,允许匹配字符串

    3.从JDK1.5开始,允许匹配枚举常量

    4.当选项后边都有break的时候,选项之间的顺序没有影响;如果有一个或者以上选项之后没有break,从匹配到该选项的地方开始执行,知道遇到break或者{}结束

    int i = 0;

    switch(i){

    case 0: int j = 0;

    case 1: j+=1;

    case 2: j+= 2;

    case 3:j+=3;

    default:j+=4;

    }

    System.out.printlnt(j);---报错

    练习:从控制台输入两个数字以及运算符号(+、-、*、/),将两个数字按照指定的运算进行并输出结果

    循环结构

    while(逻辑值){

    Code;

    }

     

    循环的要素:定义循环变量、控制判断条件、改变循环变量

    例子:

    1.求1到任意一个数的和

    2. 输入任意一个整数,输出这个整数的位数

    练习:

    1. 输入一个整数,求各位数字之和

         

    1 Scanner scanner=new Scanner(System.in);
    2                   String string=scanner.nextLine();
    3                   int sum=0;
    4                   for (int i = 0; i < string.length(); i++) {
    5                           sum+=Integer.valueOf(String.valueOf(string.charAt(i)));
    6                   }
    7                   System.out.println(sum);
    1. 求300以内7的倍数

        for (int i = 0; i < 300; i++) {

                      if (i%7==0) {

                              System.out.println(i);

                      }

             }

    1. 输入一个整数,转化成二进制显示
    1 Scanner scanner=new Scanner(System.in);
    2 
    3  int a=scanner.nextInt();
    4 
    5 String nbInteger= Integer.toBinaryString(a);
    6 
    7  System.out.println(nbInteger);

    如果while循环的代码块只有一句,{}可以省略

    do{

    Code;

    } while(逻辑值);

     

    do-while循环的代码块至少执行一次

    for(定义循环变量; 控制判断条件; 改变循环变量){

    代码块;

    }

     

    练习:求500以内6的倍数的和

    for循环的循环变量在循环结束之后不可使用,while循环可以

    当循环的次数固定或者步长固定建议使用for循环

    当循环次数不定或者变化不规律的时候建议使用while

    //希望用户输入一个偶数

    Scanner s = new Scanner(System.in);

    int even = s.nextInt();

    while(even % 2 != 0){

    even = s.nextInt();

    }

    for(;even % 2 != 0; ){

    even = s.nextInt();

    }

    练习:打印九九乘法表

           

     1      for (int i = 1; i <=9; i++) {
     2 
     3                                    for (int j = 1; j <= i; j++) {
     4 
     5                                                System.out.print(j+"*"+i+"="+i*j+"	");
     6 
     7                                    }
     8 
     9                                    System.out.println("");
    10 
    11                        }

    1*1=1

    1*2=2  2*2=4

    1*3=3 2*3=6  3*3=9

  • 相关阅读:
    [android] 安卓消息推送的几种实现方式
    二进制部署 Kubernetes 集群
    nginx location反向代理不对等时的处理
    CentOS7用阿里云Docker Yum源在线安装Docker 17.03.2
    Harbor作为Docker的镜像中心
    Harbor 使用 Helm 一键安装
    MYSQL Innodb逻辑存储结构
    安装Redis 4.0单实例
    Redis慢查询日志
    创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作
  • 原文地址:https://www.cnblogs.com/zhouguanglin/p/7191850.html
Copyright © 2011-2022 走看看