Java基础笔记08——运算符

一、运算符

1.算数运算符:

(1)+:加

①可以为加法运算符
②可以连接字符串

(2)-:减

(3)*:乘

(4)/:除(结果保留整数部分)

(5)%:取余(求模)

①n%m,n为被模数
②被模数为正数,结果为正数;被模数为负数,结果为负数

(6)++:自增

①n++:先赋值,后+1
②++n:先+1,后赋值

(7)--:自减

①n--:先赋值,后-1
②--n:先-1,后赋值

 

2.关系操作符:

(1)>:大于

(2)>=:大于等于

(3)<:小于

(4)<=:小于等于

(5)==:等于

(6)!=:不等于

 

3.位运算符:

(1)&:与,全1出1

(2)|:或,有1出1

(3)^:位异或,不同出1

(4)~:取反,1变0,0变1

(5)<<:按位左移,将整数的二进制值向左移动N位,右边空出位置补0

(6)>>:按位右移,将整数的二进制向右移动N位,如果最高位(正数都是0)为0,则左边空出位置补0;如果最高位(负数都是1)为1,则左边空出位置补1

(7)>>>:无符号右移,将整数的二进制值向右移动N位,左边空出位置补0

注意:左移或者右移相当于实现正数乘以或者除以2的N次方

 

4.逻辑运算符:

(1)&&:逻辑与,全真出真

(2)||:逻辑或,有真出真

(3)!:逻辑非,真变假,假变真

 

5.赋值运算符:

(1)=:赋值运算符

(2)+=:m+=n等价于m=m+n

(3)-=:m-=n等价于m=m-n

(4)*=:m*=n等价于m=m*n

(5)/=:m/=n等价于m=m/n

(6)%=:m%=n等价于m=m%n

(7)<<=:m<<=n等价于m=m<<n

(8)>>=:m>>=n等价于m=m>>n

(9)&=: m&=n等价于m=m&n

(10)^=:m^=n等价于m=m^n

(11)|=:m|=n等价于m=m|n

 

6.三元运算符:

? :

规则:
变量 = 条件 ? 条件为真时的语句 : 条件为假时的语句;


7.instanceof运算符

作用:用于检测对象是否是一个特定类型类类型或接口类型)
规则:(对象) instanceof (类/接口类型)

二、逻辑运算符(&&、||)与位运算符(&、|)的异同点:

(1)相同点:都可以进行逻辑运算

(2)不同点:

①做逻辑运算时,逻辑运算符可以做短路运算,位运算符不可以做短路运算,逻辑运算符效率大于位运算符
②位运算可以做按位运算,但是逻辑运算符不可以

 

package com.lqh.chapter01;

public class _05operator {
    public static void main(String[] args) {
        int a = 100;
        int b = 150;
        System.out.println(a + b);// 加法:结果为250
        System.out.println(a + "b");//这里的“+”可以连接字符串
        System.out.println(a - b);// 减法:结果为-50
        System.out.println(a * b);// 乘法:结果为15000
        System.out.println(a / b);// 除法:结果为0
        System.out.println(a % b);// 取余:结果为100
        System.out.println(-10 % 5);//被模数为负数,结果为负数
        System.out.println(a++);// 自增(先赋值后加1):结果为100
        System.out.println(++a);// 自增(先加1后赋值):结果为102
        System.out.println(a--);// 自减(先赋值后减1):结果为102
        System.out.println(--a);// 自减(先减1后赋值):结果为100

        System.out.println(a > b);// 大于:结果为false
        System.out.println(a >= b);// 大于等于:结果为false
        System.out.println(a < b);// 小于:结果为true
        System.out.println(a <= b);// 小于等于:结果为true
        System.out.println(a == b);// 等于:结果为false
        System.out.println(a != b);// 不等于:结果为true

        int c = 16;// c的二进制数为:0001 0000
        int d = 240;// d的二进制数为:1111 0000
        int d2 = -4;//d2的二进制数为:1111 0100
        System.out.println(c & d);// 与,全1出1,结果为:0001 0000(即16)
        System.out.println(c | d);// 或,有1出1,结果为:1111 0000(即240)
        System.out.println(c ^ d);// 位异或,不同出1,结果为:1110 0000(即224)
        System.out.println(~d);// 取反,1变0,0变1,结果为:0000 1111 (即16) => 16-256 (即-241)
        System.out.println(c << 2);// 按位左移,结果为:0100 0000(即64);也可以相当于16*2的2次方=16*4=64
        System.out.println(d >> 2);// 正数按位右移,结果为:0011 1100(即60);也可以相当于240/2的2次方=240/4=60
        System.out.println(d2 >> 2);// 负数按位右移,结果为:1111 1111(即-1);也可以相当于-4/2的2次方=-4/4=-1
        System.out.println(c >>> 2);// 无符号右移,结果为:100(即4);也可以相当于16/2的2次方=16/4=4

        boolean flag1 = true;
        boolean flag2 = false;
        System.out.println(flag1 && flag2);// 逻辑与,全真出真,结果为:false
        System.out.println(flag1 || flag2);// 逻辑或,有真出真,结果为:true
        System.out.println(!(flag1 || flag2));// 逻辑非,真变假,假变真,结果为:flase

        int e = 0;// 赋值运算符
        e += c;// 等价于e = e + c;结果为: 16
        System.out.println(e);
        e -= c;// 等价于e = e - c;结果为:0
        System.out.println(e);
        e *= c;// 等价于e = e * c;结果为:0
        System.out.println(e);
        e /= c;// 等价于e = e / c;结果为:0
        System.out.println(e);
        e %= c;// 等价于e = e % c;结果为:0
        System.out.println(e);
        c <<= 2;// 等价于c = c << 2;结果为:0100 0000(即64)
        System.out.println(c);
        c >>= 2;// 等价于c = c >> 2;结果为:0001 0000(即16)
        System.out.println(c);
        c &= 1;// 等价于c = c & 1;结果为:0000 0000(即0)
        System.out.println(c);
        c ^= 1;// 等价于c = c ^ 1;结果为:0000 0001(即1)
        System.out.println(c);
        c |= 1;// 等价于c = c | 1;结果为:0000 0001(即1)
        System.out.println(c);
        
        int g = 1;
        char f = (g > 0) ? 'y' : 'n';
        /*相当于:
         * int g = 1; char f; if(g > 0){ f = 'y'; } else{ f = 'n'; }
         */
        System.out.println(f);
        // 变量 = 条件 ? 条件为真时的语句 : 条件为假时的语句;

        _05operator oper = new _05operator();
        boolean result = oper instanceof _05operator;// oper属于_05operator类,返回true
        System.out.println(result);
        result = "字符串" instanceof String;// "字符串"属于String类型,返回true
        System.out.println(result);
    }
}

输出结果为:

250
100b
-50
15000
0
100
0
100
102
102
100
false
false
true
true
false
true
16
240
224
-241
64
60
-1
4
false
true
false
16
0
0
0
0
64
16
0
1
1
y
true
true

posted @ 2021-09-09 20:01  `青红造了个白`  阅读(94)  评论(0编辑  收藏  举报