Java语法基础二笔记提纲

一、运算符

  • 算术运算符(+ - * / 前++ 后++ 前— 后— +)

    • 取余运算(%):取模运算的结果的符号与被模数的符号相同。
    • (前++):先自增1,然后再做运算。不会改变本身的数据类型。例如:short s1 = 10; s1++;//正确,且s1还是short类型。但是short s1 = 10;s1 = s1 + 1;//编译出错,因为s1+1之后是int类型了,需要做强制转换才可以。
    • (后++):先运算,后自增1。不会改变本身的数据类型。
    • (前—):同上
    • (后—):同上
    • -(连接运算符):前面讲过,只能用于String类型和String类型或String类型和其他数据类型之间。
  • 赋值运算符(=、+=、-+、*=、/=、%=)

    • 区别(==)
    • 可以连续赋值,例如:int i2, j2; i2=j2=10;
    • +=、-=、/=、%=运算的结果不会改变变量本身的数据类型。例如:short s1 = 10;s1 = s1 + 2;//编译失败,但是s1 += 2;//编译通过
  • 比较运算符(关系运算符):==、!=、<、>、<=、>=、instanceof

    • 比较运算符的结果都是boolean类型。
    • 区分==和=
    • instanceof:检查是否是类的对象
    • ‘>’、<、>=、<= 只能使用在数值类型的数据之间
    • !=、==不仅可以使用在数值爱类型数据之间,还可以使用在其他引用类型变量之间。
  • 逻辑运算符:&(逻辑与)、&&(短路与)、|(逻辑或)、||(短路或)、!(逻辑非)、^(逻辑异或)

    • 逻辑运算符操作的都是boolean类型的变量。而且结果也是boolean类型
    • 区分&和&&:相同点1是当符号左边是true时,二者都会执行符号右边的运算。相同点2是它们的运算结果都是相同的。不同点是当符号左边是false时,&继续执行符号右边的运算,而&&不再执行符号右边的运算。开发中推荐使用短路与
    • 区分|和||:相同点1:当符号左边是false时,二者都会执行符号右边的运算。相同点2是它们的运算结果是相同的。不同点是当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算。开发中推荐使用短路或
  • 位运算符:<<(左移)、>>(右移)、>>>(无符号右移)、&(与运算)、|(或运算)、^(异或运算)、~(取反运算)

    • 注意没有<<<

    • 位运算操作的都是整型数据,是直接对整数的二进制进行的运算。

    • <<(左移):在一定范围内每向左移一位,都乘2。

    • ‘>>’(右移):在一定范围内每向右一位,都除以2。

    • 面试题:最高效方式计算2*8?答:2<<3

    • 典型题目1、交换两个变量的值

    • 典型题目2、实现60的二进制到十六进制的转换。

  • 三元运算符

    • 结构:(条件表达式) ? 表达式1 : 表达式2
    • 说明

      • 条件表达式的结果为boolean类型。
      • 根据条件表达式真或假,决定执行表达式1,还是表达式2。如果表达式为true,则执行表达式1.如果表达式为false,则执行表达式2。
      • 三元运算符可以嵌套使用
    • 凡是可以用三元运算符的地方,都可以改成if else,反之不成立。
    • 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁,执行效率高。
  • 运算符的优先级