第三章 Java 中的基本运算符

3.1 运算符

  • 运算符按照其功能来分,有算数运算符,关系运算符,逻辑运算符,赋值运算符等
    • 算术运算符即算术运算符号,是完成基本的算术运算 符号,即+、-、*、/
    • 关系运算符有6种关系,分别为小于,大于、等于、大于等于、小于等于、不等于
    • 逻辑运算符 即 与或非,分别代表 并且、或者、非
    • 赋值运算符基本就是 =
  • 运算符的优先级
  • 括号优先级是最高的

image.png

  • 算数运算符
    • 在Java 中,+、-、*、/、% 分别代表加、减、乘、除、取模预算
    • 参与出发运算的两个操作数都是整数时,表示整数除法,否则表示浮点数乘法
  1. 15/2 = 7
  2. 15.0/2 = 7.5

3.2 赋值运算符

  • 在 Java 中所有的 ‘ = ‘ 号都代表赋值运算符,它的作用是将一个表达式的值赋给一个左值。

eg:

int a,b,c;
a=3;
b=4;
c=(a+b)*(2*a-b) // 得出14
  • 赋值运算符二元运算符的简化格式,通常,将运算符放在赋值号的左侧(如: *=、+=、-=等)

eg:
x+=4 => x=x+4

3.3 关系运算符

  • 关系运算符
    • Java 中具有各种关系运算符,主要用于大小的比较处理,返回的是 boolean 类型。关系表达式的结果只能是 true 或 false,包括
    • = 大于或者大于等于

    • < <=小于或者小于等于
    • == 相等
    • == 与 != 比较基本数据领是比较值,比较引用类型是虚地址

这段代码第三个解释写的有点歧义,感谢小红书用户 Lynn 的指出

public class Test{
    public static void main(String[] args){
         System.out.println(2!=0);//打印 true
        System.out.println(3 == 8);//结果为 false
        System.out.print(3>2?"对的":"错的"); //三元运算符,前面的逻辑表达式为真,则打印前者。相反,则为 false。结果打印是 错的,
    }
}
  • 三元运算符:设置一个逻辑关系的判断之后,才可以赋值

使用三元运算符比较三个数字的大小

public class Test{
    public static void main(String[] args){
    int a=10;
    int y=20;
    int c=15;
    int max = x>y?(x>z?x:z):(y>z?y:z);//程序可读性变得很差
    System.out.println(max);//三元运算符比较三个数字的大小 
    }
}

数据类型间有转型的支持,数据会变成 int 类型,然后进行比较

注意:
  1. == 比较用于数值的判断,一般会从内存上比较是否相等
  2. equals 常常用来比较字符串是否相等

    3.4 逻辑运算符

  • Java中逻辑运算符使用 “&&” 表示 “与”,使用“||” 表示 “或”,使用 “!”表示取反运算
  • “||” 是按照 “短路” 方式求值的,如果第一个操作数已经能够确定值,第二个操作数就不进行计算了。
  • 连接两个 boolean 表达式
public class Test{
    public static void main(String[] args){
         System.out.println((1>5> && <2<4));//打印 false
        System.out.println((1>5) || (2>1));//打印 true
    }
}

3.5 算数运算符

3.5.1 简单的数学运算

public class calc {
     public static void main(String[] args){
        int x=2;
        int y=3;
        System.out.print(x+y); //5
        System.out.print(x-y); //-1
        System.out.print(x*y); // 6
        System.out.print(x/y); // 1
    }       
}

3.5.2 自加,自减运算符

public class Test{
    public static void main(String[] args){
         int x;
        x++;
        x--;
    }
}

3.5.3 位运算符

  1. 位运算可以直接进行二进制数据的处理:与(&)、或(|)、异或(^)、反码(~)、移位操作
  2. 位运算:(先转换成二进制再进行运算)
  • 与(&)、非(~)、或(|)、异或(^)
  • 移位运算符: <<、>> (有符号右移)、>>>(无符号右移)
  • 左移 1位相当于乘以二,右移1位相当于除以 2,比乘除运算效率更高
public class Test {
    public static void main(String[] args) {
        int a=8,c;
        c=a>>2; // 右移两位 等价于 8/2 = 4  4/2 = 2
        System.out.print(c); // 2
        c= a<<2; // 32 等价于 8*2 =16 16*2 =32
        System.out.print(c); //32
    }
}

面试题:请解释&和&&、和的区别?。

1. &和两个运算符可以进行位运算与逻辑运算;
  • 在进行逻辑运算的时候所有的判断条件都要执行;。
  • 在进行位运算的时候只是针对于当前的数据进行与和或处理。

    2. 在逻辑运算上可以使用 &&、||
  • &&:在若干个条件判断的时候,如果前面的条件返回了false,后续所有的条件都返回 false

  • ||:在若干个条件判断的时候,如果前面的条件返回了true,后续条件不再执行