Java 基本运算符

147 阅读3分钟

Java基本运算符

一.基本算术运算符

基本算术运算符包括:加(+)、减(-)、乘(*)、除(/)、模(%)

  1. 除法注意数据类型
  1. 做运算后的结果有long就long类型。没有就是int类型
public class Draft {
    public static void main(String[] args) {
        int a = 10;
        int b = 25;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
        System.out.println(a/(double)b);//除法注意数据类型
        System.out.println(b%a);
        System.out.println("=================================");
        long aa = 15646546546546464L;
        int bb = 123;
        short cc = 10;
        byte dd = 8;
        System.out.println(aa+bb+cc+dd);//long
        System.out.println(bb+cc+dd);//int
        System.out.println(cc+dd);//int
        //做运算后的结果有long就long。没有就是int类型
        System.out.println("=================================");
    }
}

二.自增自减运算符

a++;++a;a--;--a

  1. a++;//先赋值再自增
  1. ++a;//先自增再赋值
public class Draft {
    public static void main(String[] args) {
        int i = 3;
        int j = i++;//先赋值再自增
        System.out.println(i);
        int k = ++i;//先自增再赋值
        System.out.println(i);
        System.out.println(j);
        System.out.println(k);
    }
}

三.关系运算符

关系运算符主要有:==、!=、<、>、<=、>=

  1. 关系运算符的表达式返回值都是boolean类型。
public class Draft {
    public static void main(String[] args) {
        //关系运算符,返回结果是布尔类型
        int aaa = 554;
        int bbb = 888;
        System.out.println(aaa>bbb);
        System.out.println(aaa<bbb);
        System.out.println(aaa<=bbb);
        System.out.println(aaa>=bbb);
        System.out.println(aaa==bbb);
        System.out.println(aaa!=bbb);
    }
}

四.逻辑运算符

1.常见的逻辑运算符有:&&、||、!、&、|(其中&和|不建议用) 逻辑运算的返回值也是boolean型。
2. “||”和“&&”是短路操作符,“&”和“|”是非短路操作符。对于短路操作符,如果能根据操作符左边的布尔表达式推算出整个表达式的布尔值,将不执行操作符右边的布尔表达式;对于非短路操作符,始终会执行操作符两边的布尔表达式。

public class Draft {
    public static void main(String[] args) {
        boolean a1 = false;
        boolean a2 = true;
        System.out.println("a1&&a2:" + (a1&&a2));
        System.out.println("a1||a2:" + (a1||a2));
        System.out.println("  !a  :" + !(a2));
        int b1=0;//短路运算(一遇到false就返回,不执行后面的语句)
        boolean bb1=((b1>1)&&(b1++<2));
        System.out.println(bb1);
        System.out.println(b1);
    }
}

五.位运算符和移位运算符

  1. 主要有:按位非(~)、按位与(&)、按位或(|)、按位异或(^)位操作表示按二进制位运算。
A=0011 1100
B=0000 1101
-----------------------
A&B=0000 1100        全是1就是1
A|B=0011 11011就是1
A^B=0011 0001        不一样就是1
~A=1100 0011         1001
  1. 移位运算符有:左移运算符(<<)、右移运算符(>>)、无符号右移(>>>) 左移<<:最左侧不要了,最右侧补0。 右移>>:最右侧不要,最左侧补符号位(正数补0,负数补1)。 无符号右移>>>:最右侧不要,最左侧补0。
    奇技淫巧

a=2
a >> 1; ---> 1
a << 1; ---> 4
数 a 向右移一位,相当于将 a 除以 2;数 a 向左移一位,相当于将 a 乘以 2

public class Draft {
    public static void main(String[] args) {
        int kk = 2;
        //10
        System.out.println("\"十进制输出kk   \"="+kk);
        System.out.println("\"十进制输出kk>>1\"="+(kk>>1));
        //1           把10中1右移了一位
        System.out.println("\"十进制输出kk<<1\"="+(kk<<1));
        //100         把10中的1左移了一位
        System.out.println("\"二进制输出kk   \"="+Integer.toBinaryString(kk));
        System.out.println("\"二进制输出kk<<1\"="+Integer.toBinaryString(kk<<1));
        System.out.println("\"二进制输出kk>>1\"="+Integer.toBinaryString(kk>>1));
    }
}

六.偷懒运算符

  1. +=、-=;
    a+=b;即a=a+b
    a-=b;即a=a-b;
  2. 三元运算
    X ? Y : Z
    如果X==true,结果为Y,否则为Z
public class Draft {
    public static void main(String[] args) {
        int x1 = 1;
        int x2 = 2;
        x1+=x2;//x1=x1+x2
        System.out.println(x1);
        x1-=x2;//x1=x1-x2;
        System.out.println(x1);
        System.out.println("===========================");
        //三元运算
        //X ? Y : Z
        //如果X==true,结果为Y,否则为Z
        int so=25;
        String result=so<30 ? "对" : "不对";
        String result01=so<20 ? "对" : "不对";
        System.out.println(result);
        System.out.println(result01);
    }
}

Java运算符优先级

Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级高的先执行。下表列出了所有的运算符的优先级以及结合性。

运算符的优先级
优先级 运算符 结合性
1 ()、[]、{} 从左向右
2 !、+、-、~、++、-- 从右向左
3 *、/、% 从左向右
4 +、- 从左向右
5 «、»、>>> 从左向右
6 <、<=、>、>=、instanceof 从左向右
7 ==、!= 从左向右
8 & 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= 从右向左