03_java基础学习_基础语法(上)02_day03总结

=============================================================================
=============================================================================

涉及到的知识点有:
0:基本概念概述
  1:运算
  2:运算符
  3:操作数
  4:表达式
1:运算符(掌握)
  (1)算术运算符(掌握)
  (2)赋值运算符(掌握)
  (3)比较(关系)运算符(掌握)
  (4)逻辑运算符(掌握)
  (5)位运算符(了解)
  (6)三元(三目/条件)运算符(掌握)
2:键盘录入(掌握)
3:流程控制语句
4:if语句(掌握)
  (1)三种格式:
  (2)注意事项:
  (3)案例:
  (4)三元运算符和if语句第二种格式的关系:

=============================================================================
=============================================================================
0:基本概念概述
  1:运算
    对常量和变量进行操作的过程称为运算。
  2:运算符
    对常量和变量进行操作的符号称为运算符。
  3:操作数
    参与运算的数据称为操作数。
  4:表达式
    用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
    不同运算符连接的式子体现的是不同类型的表达式。

  举例:
    int a = 3 + 4;

    这是做了一个加法运算。
    +就是运算符,且是算术运算符,我们还有其他很多的运算符。
    3,4就是参与运算的操作数据。
    3 + 4整体其实就是一个算数表达式。
-----------------------------------------------------------------------------
1:运算符(掌握)
  (1)算术运算符(掌握)
    A:+,  -,  *,  /,  %,  ++,  --
    B:+的用法:
      a:加法;
      b:正号;
      c:字符串连接(拼接)符。 例如:System.out.println("x="+x+",y="+y);
    如下如图所示00:

    
    C:/和%的区别:
      数据做除法操作的时候,/取得是商,%取得是余数。
    如下图所示01:

    
    D:++和--的用法:
      a:他们的作用是:对变量进行自增1或者自减1。
      b:使用:
        **单独使用时:
          放在操作数据的前面和后面效果是一样。
            即:a++或者++a效果一样。
        **参与操作使用时:
          放在操作数的前面时:先自增1或者自减1,再参与操作。
            int a = 10;
            int b = ++a;   // a = 11; b = 11;
          放在操作数的后面时:先参与操作,再自增1或者自减1。
            int a = 10;
            int b = a++;   // b = 10; a = 11;
          如下图所示02/03:

          

          
---------------------------------------
  (2)赋值运算符(掌握)
    A: 基本的赋值运算符:=
      把=右边的数据赋值给左边。
     扩展的赋值运算符:+=,   -=,   *=,   /=,   %=,   等等。
      += 把左边和右边数据做加法后,然后将结果赋值给左边。
    B:=叫做赋值运算符,也是最基本的赋值运算符。
      int x = 10;    //把10赋值给int类型的变量x。
    C:扩展的赋值运算符的特点:
      扩展的赋值运算符隐含了自动强制转换。
      即:s += 1;
        不是等价于 s = s + 1;
        而是等价于 s = (s的数据类型)(s + 1);

      面试题:
        short s = 1;  // 编译有问题,报错,可能损失精度。
        s = s + 1;     // short类型参与运算的时候默认转换为int类型。而把int类型赋值给short类型会有问题。

        short s = 1; // 没有问题。
        s += 1;        // 因为+=隐含了自动强制转换。
        请问上面的代码哪个有问题?
---------------------------------------
  (3)比较(关系)运算符(掌握)
    A:==,  !=,  >,  >=,  <,  <=,  instanceof(后面讲)
    B:无论运算符两端是简单还是复杂最终结果是boolean类型。
    C:千万不要把==写成了=了。
    D:>=,  <=只要有一个满足即可,即:不管是大于,还是等于;或者不管是小于,还是等于。
    如下图所示04:

    
---------------------------------------
  (4)逻辑运算符(掌握)
    A: &,    |,    ^,    !,    &&,   ||
    如下图所示05:

    
    B:逻辑运算符用于连接boolean类型的表达式,在java中不可以写成3<x<6,而是应该写成x>3&x<6。
      表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
        例如:
          算术表达式:a + b
          比较表达式:a == b
    C:结论:
      逻辑与&:有false则false。

      逻辑或|:有true则true。

      逻辑异或^:相同则false,不同则true。
        举例情侣关系:男男为false,女女为false,男女为true,女男为true。

      逻辑非!:非true则false,非false则true。
        偶数个叹号!不改变布尔类型,奇数个叹号!改变类型。

      逻辑双与&&:最终的结果和&是一样的,只不过有短路效果。只要左边是false,右边就不执行。

      逻辑双或||:最终的结果和|是一样的,只不过有短路效果。只要左边是true,右边就不执行。

        所以双与(双或)的效率更高!!!

      小结:在开发中常用的逻辑运算符为:&&, ||, ! 。
---------------------------------------
  (5)位运算符(了解)
    因为我们一般是做十进制的运算的,而位运算是做的二进制的运算,所以我们一般不需要掌握,但是需要听懂!
    因为在底层源码中看大量看到位运算,因为我们的所有的操作在计算机底层都会变成为位运算。可以提高程序的效率。
    如下如所示06:

    
    对于计算机来说,要做位运算,首先要把数据转换为二进制。而且还得是补码。我们眼睛看的屏幕上显示的原码!
    如下图所示07:

    
    A:^异或位运算符的特殊用法:
      一个数据针对另一个数据位异或两次,该数据本身不变。应用:可以对数据做一个简单的加密
      如下图所示08:

      
    B:面试题:
      以后讲课过程中,若没有明确说明数据类型的话,一般默认int类型。
      a:请实现两个int变量的交换。int a = 10; int b = 20;
        法一:采用第三方变量(开发中用)。
          int c = a;
          a = b;
          b = c;
        法二:用位异或运算符(面试中用)。简记为:等号左边a,b,a 等号右边a^b
          a = a ^ b;
          b = a ^ b;   //a ^ b ^ b = a = b
          a = a ^ b;   //a ^ b ^ a = b = a
        法三:用变量相加的方法。
          a = a + b;
          b = a - b;   //a + b - b = a = b
          a = a - b;   //a + b - a = b = a
        法四:一句话搞定。
          b = (a + b) - (a = b); //b = a + b - b = a
      b:请用最有效率的方式计算出2乘以8的结果
        2<<3
      如下图所示09/10:

      

      
---------------------------------------
  (6)三元(三目/条件)运算符(掌握)
    单目运算符:~3
    双目运算符:3 + 4
    A:三目运算符格式:
      比较表达式? 表达式1 : 表达式2;
    B:执行流程:
      首先计算比较表达式的值,看是true还是false。
      如果是true,表达式1就是结果。
      如果是false,表达式2就是结果。
    C:案例:
      a:获取两个数据中的最大值。
        int max = ((x > y)? x : y);
      b:获取三个数据中的最大值。
        法一: int tmpe = ((a > b)? a : b);
            int max = ((tmpe > c)? tmpe : c);
        法二: int max = (a > b)? ((a > c)? a : c) : ((b > c)? b : c);  // 三目运算符的嵌套使用。晕啊!!!不建议这么写。
      c:比较两个数据是否相等。
        法一: boolean flag = ((a == b)? true : flase);   // 这样写太啰嗦了。
        法二: boolean flag = (a == b);
      如下图所示11:

      

-----------------------------------------------------------------------------
2:键盘录入(掌握)
  (1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
  (2)如何实现键盘录入数据呢?目前就记住:
    A:导包:
      import java.util.Scanner;
      位置:在class定义的上边。
    B:创建键盘录入对象:
      Scanner sc = new Scanner(System.in);
    C:通过对象获取数据:
      int x = sc.nextInt();
  (3)把三元运算符的案例加入键盘录入改进。
-----------------------------------------------------------------------------
3:流程控制语句
  (1)顺序结构:从上往下,依次执行。
  (2)选择结构:按照不同的选择,执行不同的代码。
  (3)循环结构:做一些重复的代码。

  选择结构也称为分支结构。Java语言提供了两种选择结构语句。
    1)if语句。
    2)switch语句。
-----------------------------------------------------------------------------
4:if语句(掌握)
  (1)三种格式:
    A:格式1:
    if(比较/关系表达式) {
      语句体;
    }
    执行流程:
      判断比较表达式的值,看是true还是false。
      如果是true,就执行语句体。
      如果是false,就不执行语句体。
---------------------------------------
  B:格式2
    if(比较表达式) {
      语句体1;
    }else {
      语句体2;
    }
    执行流程:
      判断比较表达式的值,看是true还是false。
      如果是true,就执行语句体1。
      如果是false,就执行语句体2。

      if语句的第二种格式与三元运算符的区别如下图所示12:

      
---------------------------------------
  C:格式3
    if (比较表达式1) {
      语句体1;
    } else if (比较表达式2) {
      语句体2;
    } else if (比较表达式3) {
      语句体3;
    }...
      ...
    } else if (比较表达式n) {
      语句体n;
    } else {
      语句体n+1;
    }
    执行流程:
      判断比较表达式1的值,看是true还是false。
      如果是true,就执行语句体1。
      如果是false,就继续判断比较表达式2的值,看是true还是false。
      如果是true,就执行语句体2。
      如果是false,就继续判断比较表达式3的值,看是true还是false。
      ...
      ...
      如果都不满足,就执行语句体n+1。
---------------------------------------
  (2)注意事项:
    A:比较表达式无论是简单还是复杂,结果必须是boolean类型。
    B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条语句,则不能省略。
      建议:永远不要省略。
    C:一般来说:有左大括号就没有分号,有分号就没有左大括号。
    如下图所示13:

    
    D:else后面如果没有if,是不会出现比较表达式的。
    E:三种格式的if语句其实都是一个语句,只要有一个语句体执行,其他的语句体就不再执行。
---------------------------------------
  (3)案例:
    A:比较两个数是否相等。
    B:获取两个数中的最大值。
    C:获取三个数中的最大值(if语句的嵌套)。
    D:根据成绩输出对应的等级。
    E:根据月份,输出对应的季节。
    F:根据x计算对应y的值并输出。
    如下图所示14:

    
  (4)三元运算符和if语句第二种格式的关系:
    所有的三元运算符能够实现的,if语句的第二种格式都能实现。
    反之不成立。

    如果if语句第二种格式控制的语句体是输出语句,就不可以。
    因为三元运算符是一个运算符必须要求有一个结果返回。返回的结果不能是一个输出语句。
=============================================================================

posted @ 2018-02-05 23:55  黑泽君  阅读(283)  评论(0编辑  收藏  举报