目 录CONTENT

文章目录

运算符

半糖
2024-07-24 / 0 评论 / 4 点赞 / 134 阅读 / 36542 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-08-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。作为一门编程语言,Java也提供了一套丰富的运算符来操纵变量

算数运算符

概念

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样

分类

表格中的实例假设整数变量A的值为10,变量B的值为20:

操作符

描述

示例

+

加法:相加运算符两侧的值

A + B 等于 30

-

减法:左操作数减去右操作数

A – B 等于 -10

*

乘法 :相乘操作符两侧的值

A * B等于200

/

除法:左操作数除以右操作数

B / A等于2

取余:左操作数除以右操作数的余数

B%A等于0

++

自增:操作数的值增加1

B++ 或 ++B 等于 21

--

自减:操作数的值减少1

B-- 或 --B 等于 19

运行结果:

a + b = 30

a - b = -10

a * b = 200

b / a = 2

b % a = 0

c % a = 5

a++ = 10

a-- = 11

d++ = 25

++d = 27

前缀和后缀自增自减法的区别

  • 前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。

  • 后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算

public class selfAddMinus{
    public static void main(String[] args){
        int a = 5;//定义一个变量;
        int b = 5;
        int x = 2*++a;
        int y = 2*b++;
        System.out.println("自增运算符前缀运算后a="+a+",x="+x);
        System.out.println("自增运算符后缀运算后b="+b+",y="+y);
    }
}

运行结果:

自增运算符前缀运算后a=6,x=12

自增运算符后缀运算后b=6,y=10

关系运算符

概念

关系运算符是用于比较两个值之间关系

分类

表格中的实例整数变量A的值为10,变量B的值为20:

运算符

描述

示例

==

等于:检查如果两个操作数的值是否相等,如果相等则条件为真。

(A == B)为假。

!=

不等于:检查如果两个操作数的值是否相等,如果值不相等则条件为真。

(A != B) 为真。

>

大于:检查左操作数的值是否大于右操作数的值,如果是那么条件为真。

A> B)为假。

<

小于:检查左操作数的值是否小于右操作数的值,如果是那么条件为真。

(A <B)为真。

>=

大于等于:检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。

(A> = B)为假。

<=

小于等于:检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。

(A <= B)为真。

public class Test {
 
  public static void main(String[] args) {
     int a = 10;
     int b = 20;
     System.out.println("a == b = " + (a == b) );
     System.out.println("a != b = " + (a != b) );
     System.out.println("a > b = " + (a > b) );
     System.out.println("a < b = " + (a < b) );
     System.out.println("b >= a = " + (b >= a) );
     System.out.println("b <= a = " + (b <= a) );
  }
}

运行结果:

a == b = false

a != b = true

a > b = false

a < b = true

b >= a = true

b <= a = false

逻辑运算符

概念

逻辑运算符用于对逻辑值(真或假)进行操作

分类

表格中的实例布尔变量A为真,变量B为假

分类

运算符

描述

示例

普通逻辑运算符

&

且运算:当且仅当两个操作数都为真,条件才为真
(一假全假)

(A & B)为假。

|

或运算:如果任何两个操作数任何一个为真,条件为真(一真则真)

(A | B)为真。

^

异或运算:用于一些特定的逻辑运算和位操作
(相同为假,不同为真)

A ^ B相当于1 ^ 0,结果是1,也就是true

!

非运算:用来反转操作数的逻辑状态
(遇真为假,遇假为真)

!(A & B)为真。

短路逻辑运算符

&&

短路且运算:与&类似,如果第一个表达式为假,就不在计算,返回false

(A && B)为假。

||

短路或运算:与|类似,如果第一个表达式为真,就不再计算,返回true

(A | | B)为真。

public class LuoJi{
    public static void main(String[] args){
        int a = 5;//定义一个变量;
        boolean b = (a<4)&&(a++<10);
        System.out.println("使用短路逻辑运算符的结果为"+b);
        System.out.println("a的结果为"+a);
    }
}

运算结果:

使用短路逻辑运算符的结果为false

a的结果为5

赋值运算符

概念

赋值运算符用于将一个值赋给一个变量

分类

操作符

描述

示例

=

赋值运算符:简单的赋值运算符,将右操作数的值赋给左侧操作数

C = A + B将把A + B得到的值赋给C

+=




将符号左右两边的变量进行算术运算,再将结果赋值给左边的变量

A +=B将把A + B的值赋给A

-=



与+=类似

*=

/=

%/

<<=


将符号左右两边的变量进行位移运算,再将结果赋值给左边的变量

A << =B将把A<<B的值赋给A

>>=

A >> =B将把A>>B的值赋给A

&=




将符号左右两边的变量进行逻辑运算,再将结果赋值给左边的变量

A&=B,将把A&B的值赋给A

^=

与&=类似

|=

public class Test {
    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

条件运算符

概念

条件运算符也叫三元运算符,可以同时操作三个数据或表达式的运算符,决定哪个值应该赋值给变量

格式

variable x = (expression) ? value1 if true : value2 if false

如果expression为true,则将value1赋值给x,如果expression为false,则将value2赋值给x

public class Test {
   public static void main(String[] args){
      int a , b;
      a = 10;
      // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
      b = (a == 1) ? 20 : 30;
      System.out.println( "Value of b is : " +  b );
 
      // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
      b = (a == 10) ? 20 : 30;
      System.out.println( "Value of b is : " + b );
   }
}

运算结果:

Value of b is : 30

Value of b is : 20

instanceof 运算符

概念

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

格式

( Object reference variable ) instanceof (class/interface type)

如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

如果被比较的对象兼容于右侧类型,该运算符仍然返回 true。

class Vehicle {}
 
public class Car extends Vehicle {
   public static void main(String[] args){
      Vehicle a = new Car();
      boolean result =  a instance of Car;
      System.out.println( result);
   }
}

运行结果:

true

位运算符

概念

位运算符是用于对整数类型(如字节、整数等)的二进制位进行操作的运算符

分类

位逻辑运算符

位逻辑运算符是一种在计算机编程中用于处理二进制数据的运算符,‌它们直接对整数在内存中的二进制位进行操作。‌这些运算符将操作数视为32位或64位的比特序列(‌由0和1组成)‌,‌而不是十进制、‌十六进制或八进制数值。

位移运算符

位移运算符是一种二进制运算符,‌它通过对二进制位进行操作来实现数值的位移。‌

复合位赋值运算符

所有的二进制位运算符都有一种将赋值与位运算组合在一起的简写形式。

复合位赋值运算符由赋值运算符与位逻辑运算符和位移运算符组合而成。

分类

操作符

描述

运算规则

位逻辑运算符

&(双目)

按位与

参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位同时为 1,
那么计算结果才为 1,否则为 0。因此,任何数与 0 进行按位与运算,其结果都为 0。

|(双目)

按位或

参与运算的数字,低位对齐,高位不足的补零。如果对应的二进制位只要有一个为 1,
那么结果就为 1;如果对应的二进制位都为 0,结果才为 0。

^(双目)

按位异或

参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位相同
(同时为 0 或同时为 1)时,结果为 0;如果对应的二进制位不相同,结果则为 1。

~(单目)

按位非

翻转操作数的每一位,即0变成1,1变成0。

位移运算符

<<

左位移运算符

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
相当于原数乘以2

>>

右位移运算符

按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),
如果该数为正,则高位补0,若为负数,则高位补1。
相当于原数整除2

>>>

无符号右移

按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),
无论该数为正或者负,高位都补0

复合位赋值运算符

&=

按位与赋值

将运算符左右操作数进行位运算后赋值给左边变量

|=

按位或赋值

^=

按位异或赋值

<<=

左位移赋值

>>=

右位移赋值

>>>=

无符号右位移赋值

注意:位运算符的操作数只能是整型或者字符型数据以及它们的变体,不用于 float、double 或者 long 等复杂的数据类型。

示例

&:按位与

1.png

|:按位或

2_copy.png

^按位异或

3_copy.png

~:按位非

<<左位移

>>右位移

>>>无符号右位移

暂无

Java运算符优先级

概念

Java 运算符优先级决定了在表达式中多个运算符进行计算的先后顺序。

一些具有较高优先级的运算符会先被执行,比如乘法、除法的优先级通常高于加法和减法。

当一个表达式中有多个不同优先级的运算符时,会按照优先级顺序依次进行计算;如果优先级相同,则按照从左到右的顺序计算。

优先级

类别

操作符

描述

关联性



后缀

()

括号:用于优先计算()内的表达式

从左到右

[]

中括号:主要用于数组操作

从左到右

.

访问对象的属性和方法

从左到右

一元

a++、a--

后缀自增自减法

从左到右

++a、--a

前缀自增自减法

从右到左

+

从右到左

-

从右到左

~

按位取反

从右到左

!

从右到左

乘除余

*

从左到右

/

从左到右

%

从左到右


加减

+

从左到右

-

从左到右

移位

>>

右位移

从左到右

>>>

无符号右位移

从左到右

<<

左位移

从左到右

关系

>

大于

从左到右

>=

大于等于

从左到右

<

小于

从左到右

<=

小于等于

从左到右

等于

==

等于

从左到右

!=

不等于

从左到右

按位与

&

按位与

从左到右

按位异或

^

按位异或

从左到右

按位或

|

按位或

从左到右

逻辑与

&&

逻辑与

从左到右

逻辑或

||

逻辑或

从左到右

条件

?:

三元运算符

从右到左

赋值

=

赋值运算符,包括+=等

从右到左

逗号

,

在声明多个变量时:可以用逗号分隔多个变量的声明,如 int a, b, c;

在方法参数列表中:多个参数之间用逗号分隔。

在某些特定的语法结构中:比如在 for 循环的多个表达式部分之间可能会用到逗号。

从左到右

4
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区