Java基础(二)

运算符

  • 算术运算符

    算术运算符含义
    + 加法运算、字符串拼接运算、正数
    - 减法运算、负数
    * 乘法运算、通配符
    / 除法运算(求商数)
    % 除法运算(取余数、取模运算)
    ++ 自加一运算
    - - 自减一运算
  • 比较运算符

    比较运算符含义
    == 相等比较
    < 小于比较
    > 大于比较
    >= 大于等于比较
    <= 小于等于比较
    != 不等于比较

    备注:比较运算符,运算的结果都是布尔类型值true、false。

    注意事项:

    如果我们进行多次判断,不能连着写

    数学当中,a<3 a > -1—–> -1 < a < 3

    在程序当中,【不允许】这种操作。

  • 赋值运算符

    赋值运算符含义
    = 赋值
    += 加等于
    -= 减等于
    *= 乘等于
    /= 商等于
    %= 模等于
    备注:  

    1.重点掌握【=】基本赋值运算符

    2.剩下的都是复合赋值运算符

    3.只有变量才可以使用赋值运算符,常量不能进行赋值

    4.复合赋值运算符其中隐含了一个强制类型转换。

  • 逻辑运算符

    逻辑运算符含义
    &&短路与 1.如果两边都是true,结果为true;2.如果一边为false,结果就是false
    ||短路或 1.如果两边任意一边是true,结果则为true,否则为false
    !取反(取非) 如果为false,结果为true;反之则为false
    ^ 如果两边有且只有一个为true,结果为true,否则为false
  •  位运算符
运算符含义示例
<< 左移 5 << 2 = 20 —>52^2 = 5 4 =20
>> 右移 5>>1 = 2—>5 / 2^1= 2
>>> 无符号右移 5>>>1 = 2 —>5 / 2 = 2
& 与运算(只要有一个为0,运算结果就为0,否则为1) 5 & 3 = 1
| 或运算(只要有一个为1,运算结果就为1,否则为0) 5 | 3 = 7
^ 异或运算(XOR 同为0,异为1 如果两个数值一样,运算结果为0,如果两个数值不一样,运算结果就为1) 5 ^ 3 = 6
~ 取反运算(了解一下就行) ~6 –> 0110 = -7

备注:位运算计算机底层采用的是对整数进行二进制运算。

【没有无符号左移位运算符】

当两个二进制的位数不一致时,在短的那一方高位补0

二进制整数表示:原码、补码、反码、补码

三目运算符

三目运算符格式:

        布尔类型表达式 真的结果值 : 假的结果值

三目运算符格式:

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

计算方式:

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

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

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

流程控制

顺序结构

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

选择结构(分支结构)

 

if else语句

 

  1. if 单支情况

    if语句的格式:

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

    //语句体。。。。。。

    }

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

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

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

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

  2. if else多支情形

    格式:

    if(布尔类型表达式){

    //语句体内容1;

    }else{

    //语句体内容2;

    }

    if else多支语句的执行流程:

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

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

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

  3. if … else if …else

    格式:

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

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

    }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。

  4. 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中的语句体内容

 

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

 

case穿透性

 

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

直到遇到break结束。

 

循环结构【重点】  

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

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

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

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

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

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

for循环语句结构

  结构:

  for(1.初始化语句;2.条件判断表达式;4.迭代语句){

      //循环体内容  

  }

  执行顺序:    

  执行顺序:1—>2—>3—>4—>2—>3—>4—>2—>3—>……2不满足为止。

 

  1.赋值循环变量的初始化

 

  2.负责判断是否满足循环条件,不满足退出循环

 

  3.负责执行具体的语句(逻辑功能)

 

  4.负责变量的迭代

 

  初始化语句一定和条件判断表达式紧密结合迭代语句和条件判断表达式也是紧密结合, 迭代语句是对初始化语句中定义的变量迭代的。

while循环语句

格式:

 

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

执行流程:

  • 执行顺序:1—->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不满足为止

  • 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 <= 1000; 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以内的偶数和
     int sum = 0;
  for(int i =1;i <= 100 ; i++){//i = 1 2 3 4 5 6 7......
             //使用场景 奇数跳过去,不参与累加和
             if(i % 2 != 0){
                 continue;
            }
             sum += i;
        }    
   }

扩展知识点

  1. 死循环

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

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

  2.循环嵌套

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

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

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

  执行流程

    • 执行流程: 1—>2—->3—->5—>6—->7—>8—>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 ;j < 8 ; j++){
                   //输出8 println()--->先打印内容再换行
                   System.out.print("*");
              }
               System.out.println();
          }
           
       }
       
       
       


 

posted @ 2020-11-11 23:19  寒江雨  阅读(89)  评论(0编辑  收藏  举报