zoukankan      html  css  js  c++  java
  • Java学习第三天 运算符&选择循环结构

    接昨天的内容,今天学习位运算符。。。

    一.位运算符

    运算符含义示例
    << 左移 5 << 2 = 20 ---> 5 * 2^2 = 5 * 4 = 20
    >> 右移 5 >> 1 = 2 ---> 5 / 2^1 = 5 / 2 = 2
    >>> 无符号右移 5 >>> 1 = 2---> 5 / 2^1 = 5 / 2 = 2
    & 与运算(只要有一个为0,运算结果则为0,否则为1) 5 & 3 = 1
    | 或运算(只要有一个为1,运算结果就为1,否则为0) 5 | 3 = 7
    ^ 异或运算(如果两个数值一样,运算结果就为0,否则为1) 5 ^ 3 = 6
    ~ 取反运算(了解) ~6--->0110 = -7

    备注:位运算计算机底层采用的对整数的二进制运算【没有无符号左移运算符】

    三目运算符:

      ?  :

    三目运算符格式:布尔类型表达式?真的结果值:假的结果值;

    具体运用: 数据类型 变量名 = 布尔类型表达式?真的结果值:假的结果值;

    计算方式:

      如果布尔类型表达式结果是true,三目运算符的运算结果为紧邻 ?后面的值

      如果布尔类型表达式结果是false,三目运算符运算的结果为紧邻 :后面的值

    备注:当三目运算符运算参与有其他的运算(如赋值运算),要求三目运算符中的?和:后面的值的【数据类型保持一致】。

    流程控制

    顺序结构、选择结构、循环结构【重点】

    顺序结构:程序是从上往下进行加载,按照代码的编写顺序进行执行。

    选择结构(分支结构)

    if else语句

      if 单支情况

    ​     if语句的格式:

          ​ if (布尔类型表达式/布尔类型值) {

      ​     // 语句体。。。。

    ​   }

    if语句(单支)的执行流程:

    - ​ 首先判断布尔类型表达式看它的结果是false还是true

    - ​ 如果是true就执行{}里面的方法体内容

    - ​ 如果是false就不执行{}里面的方法体内容,程序往后加载。

        if else 双支情形   

      格式:

        if (布尔类型表达式) {

        // 语句体内容1;

        } else {

        // 语句体内容2;

        }

    if else 多支的执行流程:

    • 首先判断布尔类型表达式看它的结果是true还是false

    • 如果是true,就执行语句体内容1

    • 如果是false,就执行语句体内容2

    if .... else if .... else语句 多支情形

     

      格式:

        if(布尔类型表达式1) {

        // 方法体内容1。。。。

        } else if (布尔类型表达式2) {

        // 方法体内容2.。。。。。

        }

        .........

        } else if (布尔类型表达式n) {

        // 方法体内容n。。。。

        } else {

        // 方法体内容n+1。。。。

        }

    执行流程:

    • 首先判断布尔类型表达式1看其结果是true还是false

    • 如果是true,就执行方法体内容1

    • 如果是false,就继续判断布尔类型表达式2,看其结果是true还是false

    • 如果是true,就执行方法体内容2

    • 如果是false,就继续判断布尔类型表达式......,看其结果是true还是false

    • ..........

    • 如果以上所有的布尔类型表达式都为false,最后执行else{}里面的方法体内容n+1。

      1. if .. if .. else ...else语句 嵌套情形

        格式:

        if (布尔类型表达式1) {

        // 方法体内容1

        。。。。

        if (布尔类型表达式2){

        // 方法体内容2

        。。。。。。

        } else {

        // 方法体内容3

        。。。。。

        }

        } else {

        // 方法体内容4

        。。。。。。

        }

        执行流程:

        • 首先判断布尔类型表达式1,看其结果是true还是false

        • 如果是true,就执行方法体内容1,在继续判断布尔类型表达式2,看其结果是true还是

          false,如果是true,就执行方法体内容2.

          如果是false,就执行方法体内容3。。。。

        • 如果是false,就执行方法体内容4,之后加载后面的程序。

    if语句和三目运算符的互换

        

          int num01 = 10;
              int num02 = 20;
             // 定义一个变量,保存num01和num02的最大值
             int c;
             if (num01 > num02) {
                 c = num01;
             } else {
                 c = num02;
             }
            // 上面的语句我们也可以使用三目运算符
             c = num01 > num02 ? num01 : num02; 

     switch case语句

    格式:

            switch(表达式/变量) {
                case 常量值1:
                    // 语句体内容1
                    break;
                case 常量值2:
                    // 语句体内容2
                    break;
                .....
                default:
                    // 语句体n
                    break;
            }	
    

      

    执行流程:

    - ​ 首先计算出表达式中的值

    - ​ 其次,依次和case后面的常量值做比较,一旦有对应的值,就会执行相应的语句体内容,

    ​ 在执行的过程中,遇到break就会结束switch case语句。

    - ​ 最后,如果所有的case都和表达式的值不匹配,就会执行default中的语句体内容,然后switce case语句结束。

     注意:在switch语句中,表达式的数据类型,可以是byte/short/int/char/enum(枚举),JDK1.7之后可以接收字符串类型。

    case穿透性

     在switch语句,如果case后面的break省略掉,将会出现穿透现象。不会判断后面的case情形值,直接加载后面的case中的方法体内容,直到遇到break结束。

    循环结构:

    【三种基本循环】for、while、do-while

     循环结构组成部分:一般可以分成4部分

    1. 初始化语句:在循环最初开始时,需要定义一个初始化的变量,而且只会定义一次。

    2. 条件判断(结束条件):如果条件成立满足,进入循环,如果条件不满足,则退出循环

    3. 循环体内容: 重复要做的事情内容,可能包含很多条语句(事情是有规律的)

    4. 迭代语句(步进语句):每次循环结束之后需要执行步进语句(跌代语句),对初始化的变量做步进(迭代)。

    for循环语句结构

    格式

    for(1.初始化语句;2.条件判断表达式;4.迭代语句) {
                 // 3.循环体内容
             }
    

      

     

    1. 执行流程:

    - ​ 执行顺序: 1-->2-->3-->4-->2-->3-->4-->2--->3-->4......2不满足为止。

    - ​ 1 负责循环变量的初始化
    - ​ 2 负责判断是否满足循环条件,不满足退出循环
    - ​ 3.负责执行具体的语句(逻辑功能)
    - ​ 4.负责变量的迭代

     while循环语句

      格式:

    // 1.初始化语句;
    		while(2.判断条件) {
                // 3.循环体内容
                // 4. 步进语句;
              }	
    

      

    执行流程:

    • 执行顺序:1-->2-->3-->4-->2-->3-->4-->2-->3--->4--->......2不满足为止

    • 1负责循环变量初始化

    • 2负责判断是否满足循环条件,不满足则跳出循环

    • 3负责执行具体语句,实现某个功能。

    • 4迭代循环变量

     do-while循环

      格式:

    	// 1. 初始化语句
    		do {
                // 3.循环体内容
                // 4.迭代语句
            } while (2.判断条件);
    

      

    执行流程:

    - ​ 执行顺序: 1-->3--->4--->2--->3--->4---->2---->3--->4--->......2不满足为止
    - ​ 1负责定义循环变量,并且进行初始化
    - ​ 2负责判断是否满足循环条件,不满足则跳出循环
    - ​ 3负责执行具体语句,实现某个功能
    - ​ 4迭代循环变量

    备注:无条件执行一次循环体内容,即使判断条件是不满足也依然循环一次,这样的循环是有风险的,不建议使用。

    循环语句的区别

    for和while的区别

    - ​ 控制语句中所涉及到的循环变量,当for循环结束后,定义的循环变量不能再被访问到,而while循环结束后依然可以被访问到。如果不继续使用循环变量,建议使用for循环,因为for循环结束后,循环变量就会从内存中消失,能够提高内存的使用效率。

    - ​ 在已知循环次数的情况下,建议使用for循环,当循环次数不确定时使用while循环。

    跳出语句

    break、continue两个语句

    break

    ​ 使用情形:终止switch语句或者循环语句

    ​ 备注:离开了使用场景对于break来说没有意义。

           public static void main(String[] args) {
                 // 使用break语句
                 // 跳出循环语句
                 // 10以内的偶数和
                 int sum = 0;
                 for (int i = 0; i <= 100 ; i ++) {
                     // 跳出情形 i > 10
                     if (i > 10) {
                         break;
                     }
                     if (i  % 2 == 0) {
                         sum += i;
                     } 
                 }
      			// 跳出switch case语句
                 // 季节   四个季节
                 String season = "春季";
                 switch (season) {
                     case "春季":
                         System.out.println("万物复苏的时候");
    					break;
                     case "夏季":
                         System.out.println("烈日炎炎的时候");
                         break;
                     case "秋季":
                         System.out.println("丰收的时候");
                         break;
                     case "冬季":
                         System.out.println("寒冷下雪的时候");
                         break;
                     default:    
                         System.out.println("跳出三界外,不在五行中");
                         break;
                 }                     
           }	
    

      continue

    使用情形:结束本次循环,继续下一次循环

    public static void main(String[] args) {
            	// continue
              // 求一下100以内的偶数和  2+4+6+8+10+....+100
               int sum = 0;
               for (int i = 1; i <= 100; i++) {// i= 1 2 3 4 5 6 7 8 9 10 ......
                   // 使用场景 奇数跳过去,不参与累加和
                   if (i % 2 != 0) {// i % 2
                       continue;
                   }
                   sum += i;    
               }     
        }
    

      扩展知识点

    1. ​ 死循环

    ​ 概念:循环中条件永远都是true,死循环是永不结束的循环。 例如:while(true){}.

    ​ 死循环一般要和跳出语句结合。

    2. 循环嵌套

    ​ 概念:是指一个循环的循环体是另一个循环。比如说for循环中内置了一个for循环,就是循环嵌套。

    ​ 循环的次数= 外部循环的次数 * 内部循环的次数

    格式:
      	for (1.初始化语句;2.判断语句;4.迭代语句) {
                 // 3.循环体内容
                 .....
                 for(5.初始化语句;6.判断语句;8.迭代语句) {
                     // 7.循环体内容
                 }
            }
    

      

    执行流程

    - ​ 执行流程:1--->2--->3--->5--->6--->7--->8--->6--->7--->8---->....6不满足为止(跳出循环)

    ​ ---->4--->2---->3---->5--->6---->7---->8---->6---->7---->8---->......6不满足为止(跳出循环)

    ​ ---->.........2不满足为止(结束整个循环),加载外层for循环后面的语句。

    - 外循环一次,内循环多次。

        public static void main(String[] args) {
                 // 使用场景
               // 打印3*8长方形 长为3,宽为8
                 /*
                         ********    
                         ********
                         ********
                  */
                 // 使用循环嵌套技术来实现
                 // 外循环3次,内循环8次
                 for (int i = 0; i < 3;i++) {
                     for (int j = 0; j < 8 ; j++) {
                         // 输出*   println("*")---->先打印内容再换行
                         System.out.print("*");
                     }
                     System.out.println();// 只换行不输出内容。
                 }  
            }
  • 相关阅读:
    Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法输入日志标题
    Linux下安装oracle数据库提示DISPLAY not set. Please set the DISPLAY and try again。
    redhat 关机注销命令详解
    VirtualBox的四种网络连接方式
    修改RedHat的系统显示时间
    insufficient memory to configure kdump(没有足够的内存)解决方法(待验证、待解决)
    xen坑随笔 heartbeat dpkg垃圾数据库清除
    tomcat 监控脚本
    负载均衡随笔
    GIT命令介绍
  • 原文地址:https://www.cnblogs.com/wazesx2580/p/13966734.html
Copyright © 2011-2022 走看看