Java 运算符整理


Java中运算符分为以下几类:

  • 算数运算符(+ - * / % ++ --)

  • 关系运算符(== != > < >= <=)

  • 位运算符 (& | ^ ~ << >> >>>)

  • 逻辑运算符(&& || ! & |)

  • 赋值运算符(= += -= *= /= (%)= <<= >>= &= ^= |=)

  • 其他运算符(三元运算符,instanceof运算符)


算数运算符


+:运算符两侧数相加,如果一个数加一个字符串会进行字符串拼接。

-:运算符左侧数减去右侧数。

*:运算符两侧数相乘。

/:运算符左侧数除以右侧数。

%:运算符左侧数除以右侧数的余数。

++:操作数的值加1

–:操作数的值减1


前缀后缀自增自减
1、前缀自增自减(++x,–x):先进行自增或者自减运算,在进行表达式运算。
2、后缀自增自减(x++,x–):先进行表达式运算,在进行自增或者自减运算


代码实例:

public class Operator {
    public static void main(String[] args) {
        int x = 1;   //定义一个值				   (1)
        System.out.println(++x);    //前缀自增		(2)
        System.out.println(x++);    //后缀自增		(3)
        System.out.println(--x);    //前缀自减		(4)
        System.out.println(x--);    //后缀自减		(5)
        System.out.println(x);		//最后输出x的值  (6)
    }
}

运行结果为:

2
2
2
2
1

分析运行过程:

1):定义int类型x,赋值 1。

(2):前缀自增先做自增运算,x就等于2,然后打印2。

(3):后缀自增先进行表达式运算,先执行打印,然后在做自增运算,x就等于3。

(4):前缀自减先做自减运算,x就等于2,然后打印2。

(5):后缀自减先进行表达式运算,先执行打印,然后在做自减运算,x就等于1。

(6):最后x等于1,打印1

关系运算符

==:运算符两边值相等,则条件为真。

!=:运算符两边值不相等,则条件为真

> :运算符左侧值大于右侧值,则条件为真

<:运算符左侧值小于右侧值,则条件为真

>=:运算符左侧值大于等于右侧值,则条件为真

<=:运算符左侧值小于等于右侧值,则条件为真


位运算符

Java定义了位运算符,是按照二进制位来计算的,应用于整数型(byte,short,int,long)和字符型(char)。


&:与。如果相对应的位都是1,则结果为1,否则为0。

|:或。如果相对应的位都是0,则结果为0,否则为1。

^:异或。如果相对应位值相同,则结果为0,否则为1。

~:非。位上的值取反,如果是0则为1,如果是1则为0。

<<:左移。运算符左侧为运算的值,右侧为向左移动的位数。

>>:带符号右移。运算符左侧为运算的值,右侧为向右移动的位数。

>>>:无符号右移。运算符左侧为运算的值,右侧为向右移的位数,移动得到的空位以零填充。


代码实例:

public class Operator {
    public static void main(String[] args) {
        
        byte a = 1; //0000 0001
        byte b = 9; //0000 1001
        
        System.out.println("&:" + (a & b));       //1 = 0000 0001
        System.out.println("|:" + (a | b));       //9 = 0000 1001
        System.out.println("^:" + (a ^ b));       //8 = 0000 1000
        System.out.println("~:" + (~a));          //-2 = 1111 1110
        System.out.println("<<:" + (b << a));     //18 = 0001 0010
        System.out.println(">>:" + (b >> a));     //4 = 0100
        System.out.println(">>>:" + (b >>> a));   //4 = 0000 0100
    }
}

运行结果为:

&1
|9
^8
~-2
<<18
>>4
>>>4

>>与>>>运算符的区别
>> :带符号右移(相当于除以2)。正数右移高位补0,负数右移高位补1。
>>>:无符号右移。无论正数还是负数,高位都补0。


逻辑运算符

&&:逻辑与。运算符两边都为真,条件为真。

||:逻辑或。运算符两边任何一个为真,条件为真。

!:逻辑非。反转条件结果,如果条件为真,则结果为假,如果条件为假,则结果为真。

&,|:如果运用在逻辑运算中,则为逻辑运算符。如果运用在算数运算中,则为位运算符。

&&与&,||与|区别


赋值运算符

=(赋值):运算符右侧值赋值给左侧值。

+=:加赋值。

-=:减赋值。

*=:乘赋值。

/=:除赋值。

%=:模赋值。

<<=:左移赋值。

>>=:右移赋值。

&:与赋值。

^=:异或赋值。

|=:或赋值。


代码实例:

public class Operator {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 0;
        c = a + b;
        System.out.println("c = a + b = " + c );
        c += a ;
        System.out.println("c += a  = " + c );
        c -= a ;
        System.out.println("c -= a = " + c );
        c *= a ;
        System.out.println("c *= a = " + c );
        a = 10;
        c = 15;
        c /= a ;
        System.out.println("c /= a = " + c );
        a = 10;
        c = 15;
        c %= a ;
        System.out.println("c %= a  = " + c );
        c <<= 2 ;
        System.out.println("c <<= 2 = " + c );
        c >>= 2 ;
        System.out.println("c >>= 2 = " + c );
        c >>= 2 ;
        System.out.println("c >>= 2 = " + c );
        c &= a ;
        System.out.println("c &= a  = " + c );
        c ^= a ;
        System.out.println("c ^= a   = " + c );
        c |= a ;
        System.out.println("c |= a   = " + c );
    }
}

运行结果为:

c = a + b = 30
c += a  = 40
c -= a = 30
c *= a = 300
c /= a = 1
c %= a  = 5
c <<= 2 = 20
c >>= 2 = 5
c >>= 2 = 1
c &= a  = 0
c ^= a   = 10
c |= a   = 10

三元运算符

该运算符用作条件判断,有3个操作数,并且需要判断布尔表达式的值,主要是决定哪个值应该赋值给变量。

语法格式:variable x = (condition) ? value1 : value2;

如果condition为true,则表达式值为value1,否则为value2。

代码实例:

public class Operator {
    public static void main(String[] args) {
        int n = 0;
        System.out.println(n == 0 ? 1 : 2);
        System.out.println(n != 0 ? 1 : 2);
    }
}

运行结果为:

1
2

instanceof 运算符

该运算符用于操作对象实例,检查对象是否是一个特定类型(类或接口)。

语法格式:(Object o) instanceof (class/interface type) ;

代码实例:

public class Operator {
    public static void main(String[] args) {
        Operator operator = new Operator();
        System.out.println(operator instanceof Operator);
    }
}

运行结果如下:

true

Java运算符优先级

后缀() [] . (点操作符)左到右
一元expr++ expr–从左到右
一元++expr --expr + - ~ !从右到左
乘性* /%左到右
加性+ -左到右
移位>> >>> <<左到右
关系> >= < <=左到右
相等== !=左到右
按位与左到右
按位异或^左到右
按位或|左到右
逻辑与&&左到右
逻辑或| |左到右
条件?:从右到左
赋值= + = - = * = / =%= >> = << =&= ^ = | =从右到左
逗号左到右

面试常问

1、前缀后缀自增自减笔试题。

2、+=/-=笔试题。

3、&&与&,||与|的区别。

4、>>与>>>区别。




——THE END——
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值