Java系列之运算符


运算符

  • 算术运算符:+ (加)、-(减) 、*(乘)、/(除)、%(模)、++(自增) 、 --(自减)
  • 赋值运算符:=
  • 关系运算符:>、<、>= <= == != instanceof
  • 逻辑运算符:&& || !
  • 位运算符:& | ^ ~ >> << >>>
  • 三目运算符:? :
  • 扩展赋值运算符:+= -= /= *=

算术运算符与赋值运算符

//运算符
public class Demo08 {
    public static void main(String[] args) {
        //算术运算符 + - * / % ++ --
        int i1 = 8;	//赋值运算符
        int i2 = 7;
        double d1 = 16.0;
        System.out.println("i1 + i2 = "+(i1+i2));
        System.out.println("i1 - i2 = "+(i1-i2));
        System.out.println("i1 * i2 = "+(i1*i2));
        System.out.println("i1 / i2 = "+(i1/i2));
        System.out.println("i1 % i2 = "+(i1%i2));
        i1++;
        System.out.println("i1++ = "+(i1));
        i1--;
        System.out.println("i1-- = "+(i1));
    }
}

关系运算符和逻辑运算符

public class Demo09 {
    public static void main(String[] args) {
        //关系运算符 > < == >= <= != instanceof
        int i1 = 8;
        int i2 = 10;
        System.out.println("i1 > i2 :"+(i1 > i2));      //false
        System.out.println("i1 >= i2 :"+(i1 >= i2));    //false
        System.out.println("i1 < i2 :"+(i1 < i2));      //true
        System.out.println("i1 <= i2 :"+(i1 <= i2));    //true
        System.out.println("i1 != i2 :"+(i1 != i2));    //true
        System.out.println("i1 == i2 :"+(i1 == i2));    //false
        // 逻辑运算符 && || !
        System.out.println(i1 + " > " + i2+" && "+i1 + " < " + i2+" : "+((i1>i2)&&(i1 " + i2+" || "+i1 + " < " + i2+" : "+((i1>i2)||(i1 " + i2+") : "+!((i1>i2)));
    }
}

三目运算符与算术运算符拓展

public class Demo10 {
    public static void main(String[] args) {
        // 三目运算符 (表达式 ? 值1 :值2) 当表达式的值为真取 值1,否则取值2
        int i = 1;
        int j = i < 2 ? 5 : 10; // 5
        int k = i > 2 ? 5 : 10; //10
        System.out.println(j);
        System.out.println(k);
        // 运算符拓展
        j+=2;   // j = j + 2
        k-=5;   // k = k - 5
        System.out.println(j);  // 7
        System.out.println(k);  // 5
        j*=2;   // j = j * 2
        k/=3;   // k = k / 2
        System.out.println(j);  //14
        System.out.println(k);  // 1
    }
}

位运算符

Integer.toBinaryString()为java提供的输出二进制方法

  • & 位与运算 同为1取1,否则取0
  • | 位或运算 同为0取0,否则取1
  • ^ 位异或运算 相同取0,否则取1
  • ~ 按位取反 1取0,0取1
  • << 按位左移,右侧补0
  • >> 按位右移,带符号右移 正数右移高位补0,负数右移高位补1 右移一位相当于除2
  • >>> 不带符号右移 无论是正数还是负数,高位通通补0
package test;

public class Demo11 {
    public static void main(String[] args) {
        int a = 0b10011001;
        int b = 0b10000110;
        int c = a & b;  // 0b10000000
        int d = a | b;  // 0b10011111
        int e = a ^ b;  // 0b00011111
        int f = ~a;     // 0b11111111 11111111 11111111 01100110    一个int占4个字节
        int i = 0b10011010;
        int g = i<<1;   // 左移一位相当于乘以2
        int h = i>>1;   // 带符号右移 正数右移高位补0,负数右移高位补1 右移一位相当于除2
        int l = i >>> 1; //不带符号右移 无论是正数还是负数,高位通通补0
        System.out.println(b);
        System.out.println(Integer.toBinaryString(c));
        System.out.println(Integer.toBinaryString(d));
        System.out.println(Integer.toBinaryString(e));
        System.out.println(Integer.toBinaryString(f));
        System.out.println(i);	//154
        System.out.println(g);	//308
        System.out.println(h);	// 77
        System.out.println(l);	// 77
        System.out.println(-7>>1);  // -4
        System.out.println(-1>>>1); // 2147483647:MAX_VALUE
    }
}

相关