【Java】Java运算符详解(史上最全)

本文详细介绍了Java中的各种运算符,包括算术运算符(加、减、乘、除、取模)、关系运算符(等于、不等于、比较)、逻辑运算符(与、或、非)、位运算符(按位与、或、异或、取反、移位)、赋值运算符和条件运算符(如if、switch、三目),以及instanceof和自增/减运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Java】Java运算符详解(史上最全)


Java运算符是用于执行各种数学、逻辑和位运算的符号。Java中的运算符可以分为以下几类:

一、算术运算符

用于执行基本的数学运算,如加、减、乘、除和取模。常用的算术运算符包括+、-、*、/和%。

算数运算符详解

Java中的算术运算符包括加、减、乘、除、取模等,下面分别详细介绍。

1.1、加法运算符(+)

加法运算符用于将两个数相加,例如:

int a = 3;
int b = 5;
int c = a + b; // c的值为8

1.2、减法运算符(-)

减法运算符用于将第一个数减去第二个数,例如:

int a = 5;
int b = 3;
int c = a - b; // c的值为2

1.3、乘法运算符(*)

乘法运算符用于将两个数相乘,例如:

int a = 3;
int b = 5;
int c = a * b; // c的值为15

1.4、除法运算符(/)

除法运算符用于将第一个数除以第二个数,例如:

int a = 10;
int b = 3;
int c = a / b; // c的值为3

注意:如果两个数都是整型,那么结果也是整型,即会取整。

1.5、取模运算符(%)

取模运算符用于取第一个数除以第二个数的余数,例如:

int a = 10;
int b = 3;
int c = a % b; // c的值为1

1.6、自增运算符(++)

自增运算符用于将变量的值加1,例如:

int a = 3;
a++; // a的值为4

1.7、自减运算符(–)

自减运算符用于将变量的值减1,例如:

int a = 3;
a--; // a的值为2

注意:自增和自减运算符可以写在变量前面或后面,写在前面表示先运算再赋值,写在后面表示先赋值再运算。

以上就是Java中的算术运算符的详细介绍。

二、关系运算符

用于比较两个值之间的关系,如等于、不等于、大于、小于、大于等于和小于等于。常用的关系运算符包括==、!=、>、<、>=和<=。

Java关系运算符用于比较两个值之间的关系,返回一个布尔值(true或false)。下面是Java中的关系运算符:

2.1、==

判断两个值是否相等,如果相等返回true,否则返回false。

2.2、!=

判断两个值是否不相等,如果不相等返回true,否则返回false。

2.3、>

判断左边的值是否大于右边的值,如果是返回true,否则返回false。

2.4、<

判断左边的值是否小于右边的值,如果是返回true,否则返回false。

2.5、>=

判断左边的值是否大于等于右边的值,如果是返回true,否则返回false。

2.6、<=

判断左边的值是否小于等于右边的值,如果是返回true,否则返回false。

关系运算符通常用于条件语句和循环语句中,例如:

if (a == b) {
   System.out.println("a等于b");
}

while (a < b) {
   System.out.println("a小于b");
   a++;
}

注意:关系运算符不能用于比较对象,因为对象之间的比较需要用到equals()方法。

三、逻辑运算符

用于执行逻辑运算,如与、或和非运算。常用的逻辑运算符包括&&、||和!。

Java中的逻辑运算符用于连接两个或多个布尔表达式,产生一个新的布尔值。Java中的逻辑运算符包括以下几种:

3.1、&&(逻辑与)

当且仅当两个操作数都为true时,结果为true;否则结果为false。

3.2、||(逻辑或)

当两个操作数中有一个为true时,结果为true;否则结果为false。

3.3、!(逻辑非)

操作数为true时,结果为false;操作数为false时,结果为true。

逻辑运算符的优先级从高到低分别为:! > && > ||。因此,在使用时应当注意运算符的优先级,避免出现不必要的错误。

以下是一些逻辑运算符的示例:

boolean a = true;
boolean b = false;

System.out.println(a && b); // false
System.out.println(a || b); // true
System.out.println(!a); // false

在这个示例中,变量a和b分别被赋值为true和false。第一个输出语句使用了逻辑与运算符,因此结果为false。第二个输出语句使用了逻辑或运算符,因此结果为true。第三个输出语句使用了逻辑非运算符,因此结果为false。

四、位运算符

用于执行二进制位运算,如按位与、按位或、按位异或和取反。常用的位运算符包括&、|、^和~。

Java中的位运算符是用来操作二进制数的运算符,它们可以对整数类型(byte、short、int、long)进行操作。Java中的位运算符有以下几种:

4.1、按位与(&):两个位都为1时,结果才为1,否则为0。

4.2、按位或(|):两个位都为0时,结果才为0,否则为1。

4.3、按位异或(^):两个位相同为0,不同为1。

4.4、取反(~):对二进制数进行取反操作,0变成1,1变成0。

4.5、左移(<<):将一个数的二进制码向左移动指定的位数,低位补0。

4.6、右移(>>):将一个数的二进制码向右移动指定的位数,高位补符号位。

4.7、无符号右移(>>>):将一个数的二进制码向右移动指定的位数,高位补0。

例如:

int a = 5; // 二进制为 0000 0101
int b = 3; // 二进制为 0000 0011

int c = a & b; // 0000 0001
int d = a | b; // 0000 0111
int e = a ^ b; // 0000 0110
int f = ~a; // 1111 1010

int g = a << 2; // 0001 0100
int h = a >> 2; // 0000 0001
int i = a >>> 2; // 0000 0001

以上代码中,a和b分别表示整数5和3的二进制码,通过位运算符进行运算得到c、d、e、f、g、h、i的值,分别表示按位与、按位或、按位异或、取反、左移、右移、无符号右移的结果。

五、赋值运算符

用于将值赋给变量,如=、+=、-=、*=、/=和%=。

Java赋值运算符用于给变量赋值,它将右侧表达式的值赋给左侧的变量。Java赋值运算符有以下几种:

5.1、= 赋值运算符

将右侧表达式的值赋给左侧的变量。

5.2、+= 加等于运算符

将右侧表达式的值加上左侧变量的值,并将结果赋给左侧变量。

5.3、-= 减等于运算符

将右侧表达式的值减去左侧变量的值,并将结果赋给左侧变量。

5.4、*= 乘等于运算符

将右侧表达式的值乘以左侧变量的值,并将结果赋给左侧变量。

5.5、/= 除等于运算符

将右侧表达式的值除以左侧变量的值,并将结果赋给左侧变量。

5.6、%= 取模等于运算符

将右侧表达式的值取模左侧变量的值,并将结果赋给左侧变量。

5.7、<<= 左移等于运算符

将左侧变量的值左移右侧表达式的值所指定的位数,并将结果赋给左侧变量。

5.8、>>= 右移等于运算符

将左侧变量的值右移右侧表达式的值所指定的位数,并将结果赋给左侧变量。

5.9、&= 按位与等于运算符

将左侧变量的值与右侧表达式的值进行按位与运算,并将结果赋给左侧变量。

5.10、^= 按位异或等于运算符

将左侧变量的值与右侧表达式的值进行按位异或运算,并将结果赋给左侧变量。

5.11、|= 按位或等于运算符

将左侧变量的值与右侧表达式的值进行按位或运算,并将结果赋给左侧变量。

六、条件运算符

用于根据条件选择执行不同的操作,如三目运算符(?:)。

Java中的条件运算符是用来进行条件判断的,主要有三种:if语句、switch语句和三目运算符。

6.1、if语句

if语句是最基本的条件判断语句,用于判断一个条件是否成立,如果成立则执行某个语句块,否则执行另一个语句块。if语句的语法格式如下:

if (condition) {
    // 如果条件成立则执行这里的语句块
} else {
    // 如果条件不成立则执行这里的语句块
}

其中,condition是一个布尔表达式,如果它的值为true,则执行if语句后面的花括号里的语句块;否则执行else语句后面的花括号里的语句块。

6.2、switch语句

switch语句也用于条件判断,但是它的用法比if语句稍微复杂一些。switch语句的语法格式如下:

switch (expression) {
    case value1:
        // 如果expression的值等于value1,则执行这里的语句块
        break;
    case value2:
        // 如果expression的值等于value2,则执行这里的语句块
        break;
    default:
        // 如果expression的值不等于任何一个case,则执行这里的语句块
        break;
}

其中,expression是一个表达式,它的值会被与每个case后面的值进行比较。如果expression的值等于某个case后面的值,则执行该case后面的语句块;如果expression的值不等于任何一个case后面的值,则执行default后面的语句块。

6.3、三目运算符

三目运算符是一种简单的条件运算符,它的语法格式如下:

result = condition ? value1 : value2;

其中,condition是一个布尔表达式,如果它的值为true,则返回value1;否则返回value2。这个运算符通常用于简单的条件判断和赋值操作。

七、instanceof运算符

用于判断一个对象是否属于某个类的实例。

Java instanceof运算符用于检查对象是否是某个特定类的实例。它的语法如下:

object instanceof class

其中,object是要检查的对象,class是要检查的类。如果object是class的一个实例,则返回true,否则返回false。

例如,假设有一个Animal类和一个Dog类,Dog是Animal的子类,我们可以使用instanceof运算符来检查一个对象是否是Animal或Dog的实例:

Animal animal = new Animal();
Dog dog = new Dog();

if (animal instanceof Animal) {
    System.out.println("animal is an instance of Animal");
}

if (dog instanceof Animal) {
    System.out.println("dog is an instance of Animal");
}

if (dog instanceof Dog) {
    System.out.println("dog is an instance of Dog");
}

这段代码会输出:

animal is an instance of Animal
dog is an instance of Animal
dog is an instance of Dog

因为animal是Animal的实例,dog既是Animal的实例也是Dog的实例。

instanceof运算符也可以用于检查一个对象是否是某个接口的实现类的实例。例如,假设有一个Movable接口和一个Car类实现了这个接口,我们可以使用instanceof运算符来检查一个对象是否是Movable的实例:

Movable car = new Car();

if (car instanceof Movable) {
    System.out.println("car is an instance of Movable");
}

这段代码会输出:

car is an instance of Movable

因为car是Car的实例,同时也是Movable接口的实现类的实例。

需要注意的是,如果一个对象是null,那么使用instanceof运算符会抛出NullPointerException异常。因此,在使用instanceof运算符之前,需要先确保对象不是null。

八、++和–运算符

用于对变量进行自增或自减操作。

Java中的++和–运算符是自增和自减运算符,它们可以用来对变量进行加1或减1的操作。

++运算符有两种形式,前缀和后缀。前缀形式++i表示先将变量i加1,然后再使用i的值;后缀形式i++表示先使用i的值,然后再将变量i加1。

例如:

int i = 0;
System.out.println(++i); // 输出1
System.out.println(i++); // 输出1
System.out.println(i); // 输出2

–运算符和++运算符类似,也有前缀和后缀两种形式。前缀形式–i表示先将变量i减1,然后再使用i的值;后缀形式i–表示先使用i的值,然后再将变量i减1。

例如:

int i = 0;
System.out.println(--i); // 输出-1
System.out.println(i--); // 输出-1
System.out.println(i); // 输出-2

需要注意的是,++和–运算符只能用于变量,不能用于常量。并且,它们只能用于数值类型和字符类型的变量,不能用于布尔类型的变量。

九、Java运算符的优先级详解

需要注意的是,Java运算符有优先级之分,即某些运算符会先于其他运算符执行。在表达式中,可以使用括号来改变运算符的优先级。

Java中的运算符按照优先级从高到低的顺序如下:

  1. 后缀运算符:++、–
  2. 一元运算符:+、-、!、~、++、–、(type)
  3. 乘性运算符:*、/、%
  4. 加性运算符:+、-
  5. 移位运算符:<<、>>、>>>
  6. 关系运算符:<、<=、>、>=、instanceof
  7. 相等运算符:==、!=
  8. 按位与运算符:&
  9. 按位异或运算符:^
  10. 按位或运算符:|
  11. 逻辑与运算符:&&
  12. 逻辑或运算符:||
  13. 条件运算符:? :
  14. 赋值运算符:=、+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=、>>>=

在表达式中,优先级高的运算符先被计算。如果优先级相同,则按照从左到右的顺序进行计算。如果需要改变运算的优先级,可以使用括号来改变。例如:

int a = 10, b = 5, c = 2;
int result = a + b * c; // 先计算b*c,再加上a
int result2 = (a + b) * c; // 先计算a+b,再乘以c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tzq@2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值