Java中的运算符

什么是运算符

  • 运算符对一个或者多个值进行运算,并得到一个运算结果。
  • 运算符的运算结果类型是固定的,有时候会根据被计算的值变化。比如两个int相加,结果的类型就是int。两个byte相加,返回值的类型就是byte。
  • 混淆点:除赋值运算符外,运算符本身不会更改变量的值。
public class OprtNotChangeVariableValue {
    public static void main(String[] args) {
        int a = 100;
        System.out.println(a+1);
        System.out.println(a);

        a = a + 6;
        System.out.println(a);
    }
}

取模运算符:%

  • 用来计算余数
  • 负数也可以被取模
  • 负数也可以取模
  • 小数也可以取模
public class ModCalc {
    public static void main(String[] args){
        // num(被模数)的正负会影响结果的正负;而模数不会影响结果的正负。
        // int num = 10;
        int num = -10;

        System.out.println(num % 2);
        System.out.println(num % -3);
        System.out.println(num % 4);
        System.out.println(num % 5);
        System.out.println(num % -6);
    }
}

整数的除法运算

  • int除以int还是int,不会变成浮点数。
  • 如果想要得到浮点数,那么改变其中一个变量的类型为浮点型即可。
public class IntegerDiv {
    public static void main(String[] args){
        // 想要得到浮点数的结果,只要把参与计算的数字任意一个改成浮点数即可。
        double a = 10.0;
        int b = 3;
        System.out.println(a/b);

    }
}

比较运算符

  • >
  • >=
  • <
  • <=
  • !=
  • ==
public class CompareOprt {
    public static void main(String[] args){
        // 比较运算符 > >= < <= != ==
        byte a = 10;
        byte b = 15;
        byte c = 10;

        System.out.println(a>b);
        System.out.println(a>=b);
        System.out.println(a<b);
        System.out.println(a<=b);
        System.out.println(a!=b);

        System.out.println(a!=c);
        System.out.println(a>=c);
        System.out.println(a<=c);
        System.out.println(a==b);
        System.out.println(a==c);
    }
}

布尔运算符

  • ! 叫做非运算符,not运算符。!true 是false,!false 是true。
  • & 叫做且运算符,and运算符。true & true 是true,true & false 是false。
  • && 叫做且且运算符,andand运算符。运算结果和&一样。
  • | 叫做或运算符,or运算符。true | false 是true,false | false 是false,true | true是true。(但是它会把所有值都要运算一遍,因此如果存在一个不合法的表达式,就会报错。双个的||运算符则不会。
  • || 叫做或或运算符,oror运算符。运算结果和 | 一样。
  • 推荐使用双个的 && 和 || 运算符。
public class BooleanOprt {
    public static void main(String[] args){
        // 开发中,我们尽量用双个and与运算符(&&)或者双个or或运算符(||)
        boolean a = true;
        boolean b = false;

        System.out.println(a&&b);
        System.out.println(a&b);
        System.out.println(a||b);
        System.out.println(a|b);
        // 第12行不会报错,这是因为当我们用到双或运算符时,系统在判断到真值时就会停下来。这里a是true于是直接返回了true,不会管后面的表达式是否正确。
        System.out.println(a || (10 / 0 > 1));
        // 第14行会报错,这是因为单个的或运算符会让系统计算后面的表达式,然而后面的表达式如果是不合法的,那么就会报错了。
        System.out.println(a | (10 / 0 > 1));
    }
}

小括号运算符

小括号运算符内可以包含任何运算符,决定运算符的顺序。

public class ParentOprt {
    public static void main(String[] args) {
        int a = 10;
        int b = 88;
        boolean c = ((a+b)*a-9*(a+b)) == (a+b);

        System.out.println(c);

    }
}

运算符优先级(优先级从上到下依次递减)

  • ()
  • !
  • *, /, %
  • +, -
  • >, >=, <, <=
  • ==
  • !=
  • &, &&, |, ||
  • =

理解运算符,灵活记忆优先级

  • 为什么等号的优先级最低?(因为等号是赋值运算符,要等到所有数值运算完毕才能去赋值。
  • 为什么布尔运算符的优先级低于比较运算符?(因为要先比较出结果才能看他们之间的逻辑关系,从而得到布尔值。
  • 为什么比较运算符的优先级比算数运算符低?(因为要等到数值运算完成后才能进行比较啊。
原文地址:https://www.cnblogs.com/buildnewhomeland/p/12104980.html