天天看点

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

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

涉及到的知识点有:

0:基本概念概述

  1:运算

  2:运算符

  3:操作数

  4:表达式

1:运算符(掌握)

  (1)算术运算符(掌握)

  (2)赋值运算符(掌握)

  (3)比较(关系)运算符(掌握)

  (4)逻辑运算符(掌握)

  (5)位运算符(了解)

  (6)三元(三目/条件)运算符(掌握)

2:键盘录入(掌握)

3:流程控制语句

4:if语句(掌握)

  (1)三种格式:

  (2)注意事项:

  (3)案例:

  (4)三元运算符和if语句第二种格式的关系:

    对常量和变量进行操作的过程称为运算。

    对常量和变量进行操作的符号称为运算符。

    参与运算的数据称为操作数

    用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。

    不同运算符连接的式子体现的是不同类型的表达式。

  举例:

    int a = 3 + 4;

    这是做了一个加法运算。

    +就是运算符,且是算术运算符,我们还有其他很多的运算符。

    3,4就是参与运算的操作数据。

    3 + 4整体其实就是一个算数表达式。

-----------------------------------------------------------------------------

    A:+,  -,  *,  /,  %,  ++,  --

    B:+的用法:

      a:加法;

      b:正号;

      c:字符串连接(拼接)符。 例如:System.out.println("x="+x+",y="+y);

如下如图所示00:

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

    C:/和%的区别:

      数据做除法操作的时候,/取得是商,%取得是余数。

如下图所示01:

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

    D:++和--的用法:

      a:他们的作用是:对变量进行自增1或者自减1。

      b:使用:

        **单独使用时:

          放在操作数据的前面和后面效果是一样。

            即:a++或者++a效果一样。

        **参与操作使用时:

          放在操作数的前面时:先自增1或者自减1,再参与操作。

            int a = 10;

            int b = ++a;   //a = 11; b = 11;

          放在操作数的后面时:先参与操作,再自增1或者自减1。

            int b = a++;   //b = 10; a = 11;

如下图所示02/03:

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

---------------------------------------

    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;        //因为+=隐含了自动强制转换。

        请问上面的代码哪个有问题?

    A:==,  !=,  >,  >=,  <,  <=,  instanceof(后面讲)

    B:无论运算符两端是简单还是复杂最终结果是boolean类型。

    C:千万不要把==写成了=了。

    D:>=,  <=只要有一个满足即可,即:不管是大于,还是等于;或者不管是小于,还是等于。

如下图所示04:

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

    A: &,    |,    ^,    !,    &&,   ||

如下图所示05:

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

    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,右边就不执行。

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

      小结:在开发中常用的逻辑运算符为:&&, ||, ! 。

    因为我们一般是做十进制的运算的,而位运算是做的二进制的运算,所以我们一般不需要掌握,但是需要听懂!

    因为在底层源码中看大量看到位运算,因为我们的所有的操作在计算机底层都会变成为位运算。可以提高程序的效率。

如下如所示06:

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

    要做位运算,首先要把数据转换为二进制。而且还得是补码。

如下图所示07:

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

    A:^异或位运算符的特殊用法:

      一个数据针对另一个数据位异或两次,该数据本身不变。应用:可以对数据做一个简单的加密。

如下图所示08:

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

    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:

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

    单目运算符:~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:

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

-----------------------------------------------------------------------------

  (1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。

  (2)如何实现键盘录入数据呢?目前就记住:

    A:导包:

      import java.util.Scanner;

      位置:在class定义的上边。

    B:创建键盘录入对象:

      Scanner sc = new Scanner(System.in);

    C:通过对象获取数据:

      int x = sc.nextInt();

  (3)把三元运算符的案例加入键盘录入改进。

  (1)顺序结构:从上往下,依次执行。

  (2)选择结构:按照不同的选择,执行不同的代码。

  (3)循环结构:做一些重复的代码。

  选择结构也称为分支结构。Java语言提供了两种选择结构语句。

    1)if语句。

    2)switch语句。

    A:格式1:

    if(比较/关系表达式) {

      语句体;

    }

    执行流程:

      判断比较表达式的值,看是true还是false。

      如果是true,就执行语句体。

      如果是false,就不执行语句体。

---------------------------------------

  B:格式2

    if(比较表达式) {

      语句体1;

    }else {

      语句体2;

    }

      如果是true,就执行语句体1。

      如果是false,就执行语句体2。

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

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

---------------------------------------

  C:格式3

    if(比较表达式1) {

    }else if(比较表达式2) {

    }else if(比较表达式3) {

      语句体3;

    }...

      ...

    }else if(比较表达式n) {

      语句体n;

    else {

      语句体n+1;

      判断比较表达式1的值,看是true还是false。

      如果是false,就继续判断比较表达式2的值,看是true还是false。

      如果是true,就执行语句体2。

      如果是false,就继续判断比较表达式3的值,看是true还是false。

      如果都不满足,就执行语句体n+1。

    A:比较表达式无论是简单还是复杂,结果必须是boolean类型。

    B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条语句,则不能省略。

      建议:永远不要省略。

    C:一般来说:有左大括号就没有分号,有分号就没有左大括号。

如下图所示13:

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

    D:else后面如果没有if,是不会出现比较表达式的。

    E:三种格式的if语句其实都是一个语句,只要有一个语句体执行,其他的语句体就不再执行。

    A:比较两个数是否相等。

    B:获取两个数中的最大值。

    C:获取三个数中的最大值(if语句的嵌套)。

    D:根据成绩输出对应的等级。

    E:根据月份,输出对应的季节。

    F:根据x计算对应y的值并输出。

如下图所示14:

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

  (4)三元运算符和if语句第二种格式的关系:

    所有的三元运算符能够实现的,if语句的第二种格式都能实现。

    反之不成立。

    如果if语句第二种格式控制的语句体是输出语句,就不可以。

    因为三元运算符是一个运算符,必须要求有一个结果返回。不能是一个输出语句。

我的GitHub地址:

https://github.com/heizemingjun

我的博客园地址:

http://www.cnblogs.com/chenmingjun

我的蚂蚁笔记博客地址:

http://blog.leanote.com/chenmingjun

Copyright ©2018 黑泽明军

【转载文章务必保留出处和署名,谢谢!】