运算符

  • 算术运算符: +,-,*,/,%,++,--
  • 赋值运算符 =
  • 关系运算符: >,<,>=,<=,==,!= instanceof
  • 逻辑运算符: &&,||,!
  • 位运算符: &,|,^,~ , >>,<<,>>>
  • 条件运算符 ?:
  • 扩展赋值运算符:+=,-=,*=,/=

整数运算

如果两个操作数有一个为Long, 则结果也为long
没有long时,结果为int。即使操作数全为shot,byte,结果也是int.

public static void main(String[] args) { 
    long a = 1231321311231231L; 
    int b = 1213; 
    short c = 10; 
    byte d = 8; 
    System.out.println((a+b+c+d)); //Long类型 
    System.out.println((b + c + d));//Int类型 
    System.out.println((c + d));//Int类型 
}

浮点数运算

如果两个操作数有一个为double, 则结果为double.
只有两个操作数都是float, 则结果才为float.
public static void main(String[] args) {
float a = 3.14565F;
double b = 3.194546464;
float c = 1.3123123F;
System.out.println(a+b); //double类型
System.out.println(b+c); //double类型
System.out.println(a+c); //float类型
}

关系运算符

返回布尔值

取模(余)运算

其操作数可以为浮点数,一般使用整数。如:5.9%3.9=2.000000004
负数%负数=负数;
负数%正数=负数;
正数%负数=正数;

public static void main(String[] args) { 
    System.out.println(9 % 4); //1 
    System.out.println(-9 % -4); //-1 
    System.out.println(-10 % 4); //-2 
    System.out.println(9 % -4); //1 
}

一元运算符

自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,
而自增自减运算符是一个操作数,分为前缀和后缀两种。

public class Hello {
    public static void main(String[] args) {
        int a = 3;
        //数值上a++ ++a =a+1
        int b = a++; //执行完后,b=3。先给b赋值,再自增。
        System.out.println(b);
        System.out.println(a);//此时a已经等于4
        int c = ++a; //执行完后,c=5。先自增,再给c赋值
        System.out.println(c);
        System.out.println(a);
    }
}

幂运算

public static void main(String[] args) { 
    int a = 3^2; //java中不能这么处理, ^是异或符号。 
    double b = Math.pow(3, 2); 
}
//Math类提供了很多科学和工程计算需要的方法和常数。特殊的运算都需要运用到方法!

逻辑运算符

逻辑与:&&,逻辑或:||,逻辑非:!

public static void main(String[] args) {
    boolean a = true; 
    boolean b = false; 
    System.out.println("a && b = " + (a&&b)); 
    System.out.println("a || b = " + (a||b) ); 
    System.out.println("!(a && b) = " + !(a && b)); 
}

其实&才是逻辑与,&&是短路与;区别是&&当遇到false就会停下。|才是逻辑或,||是短路或;区别是||当遇到true就会停下。

public static void main(String[] args) {
        int num1 = 1;
        int num2 = 1;
        boolean b = false;
        boolean c = b & ++num1 > 1;
        boolean d = b && ++num2 > 1;
        System.out.println("c is " + c + " num1=" + num1);//c is false num1=2
        System.out.println("d is " + d + " num2=" + num2);//d is false num2=1
    }
public static void main(String[] args) {
        int num1 = 1;
        int num2 = 1;
        boolean b = true;
        boolean c = b | ++num1 > 1;
        boolean d = b || ++num2 > 1;
        System.out.println("c is " + c + " num1=" + num1);//c is true num1=2
        System.out.println("d is " + d + " num2=" + num2);//d is true num2=1
    }

位运算符


左移一位相当于乘2,右移一位相当于除2取商。
2<<3
2的二进制是10 在32位存储器里面是0000 0000 0000 0010
左移三位后变成 0000 0000 0001 0000 也就是16

扩展运算符

字符串连接符

“+” 运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串
然后再进行连接。

public class Hello {
    public static void main(String[] args) {
        int c = 13;
        int d = 14;
        System.out.println("c+d=" + c + d);
        System.out.println(c + d + "c+d=");
    }
}

三目条件运算符

x ? y : z

其中x为boolean类型表达式,如果x的值为true,则结果为表达式y的值,否则=结果为表达式z的值。

public class Hello {
    public static void main(String[] args) {
        int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println("type= " + type);
    }
    // 结果为:type= 及格
}
posted @ 2022-03-25 21:09  ben10044  阅读(42)  评论(0编辑  收藏  举报