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();// 只换行不输出内容。
             }  
        }

 

posted @ 2020-11-12 22:41  长安店小二  阅读(62)  评论(0编辑  收藏  举报