全网最全Java运算符(八种)

Java运算符

一、什么是运算符?

运算符是编程语言中用于执行各种操作的特殊符号或关键字。它们用于处理变量和值,执行数学计算、逻辑运算、位运算和其他操作,以便编写复杂的程序。运算符允许程序员在代码中执行各种操作,从而实现所需的功能。

二、Java运算符的分类

在这里插入图片描述

  1. 算术运算符: 用于执行基本的数学运算,加法、减法、乘法、除法和取模(取余)等。例如,+ 表示加法运算,- 表示减法运算。
  2. 关系运算符: 用于比较两个值的关系,如等于、不等于、大于、小于等。关系运算符返回布尔值(truefalse),用于条件判断。例如,== 表示等于运算,< 表示小于运算。
  3. 逻辑运算符: 用于执行逻辑运算,如逻辑与、逻辑或和逻辑非等。逻辑运算符通常用于布尔值的操作,它们返回布尔结果。例如,&& 表示逻辑与,|| 表示逻辑或,! 表示逻辑非。
  4. 赋值运算符: 用于将值赋给变量,如 = 表示赋值运算,+= 表示加并赋值。
  5. 自增和自减运算符: 用于增加或减少变量的值,例如 ++ 表示自增,-- 表示自减。
  6. 位运算符: 用于执行位级别的操作,如按位与、按位或、按位异或和位移操作等。位运算符通常用于整数数据类型。例如,& 表示按位与,| 表示按位或,<< 表示左移。
  7. 条件运算符(三元运算符): 用于根据条件选择值,例如 ? : 表示条件运算符。
  8. 实例关系运算符: 用于比较对象引用,如 instanceof 用于检查对象是否是特定类的实例。
  9. 类型转换运算符: 用于将值从一种数据类型转换为另一种数据类型,如强制类型转换。

三、算式运算符

基本的四则运算 加减乘除模

  • +:加法 两数相加
  • -:减法 两数相减
  • *:乘法 两数相乘
  • /:除法 两数相除(两边都是整型时,进行整型运算)
  • %:取模 两数取余(两个数必须是整数)
int a = 20;
int b = 10;

System.out.println(a + b);//30
System.out.println(a - b);//10
System.out.println(a * b);//200
System.out.println(a / b);//2
System.out.println(a % b);//0

注意事项:

  • 算式运算符都是二元运算符需要两个操作数
  • / % 的第二个操作数不能为0
  • /:int / int 结果还是int类型,而且会向下取整

四、关系运算符

用于比较两个值的关系,返回布尔值。

  • ==:等于
  • !=:不等于
  • <:小于
  • >:大于
  • <=:小于等于
  • >=:大于等于
int num1 = 3;
int num2 = 0;
System.out.println(num1 == num2);//false
System.out.println(num1 != num2);//true
System.out.println(num1 < num2);//false
System.out.println(num1 > num2);//true
System.out.println(num1 <= num2);//false
System.out.println(num1 >= num2);//true

注意事项:

  • 当需要多次判断时,不能连着写,比如:3 < a < 5,Java程序与数学中是有区别的

五、逻辑运算符(重要)

用于执行逻辑运算,返回布尔值。且两边的变量表达式都要是boolean类型的。

  • &&:逻辑与(与)
  • ||:逻辑或(或)
  • !:逻辑非(非)

1.逻辑与 &&

语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果。

相当于现实生活中的且,比如:如果是学生,并且 带有学生证 才可以享受半票。

两个表达式都为真,结果才是真,只要有一个是假,结果就是假。

int a = 1;
int b = 2;
System.out.println(a == 1 && b == 2); // 左为真 且 右为真 则结果为真

2.逻辑或 ||

语法规则:表达式1 || 表达式2,左右表达式必须是boolean类型的结果。

相当于现实生活中的或,比如:买房子交钱时,全款 或者 按揭都可以,如果全款或者按揭,房子都是你的,

否则站一边去。

int a = 1;
int b = 2;
System.out.println(a == 1 || b == 2); // 左为真 且 右为真 则结果为真

注意:&&|| 都是短路逻辑运算符

int a = 1;
int b = 2;
System.out.println(a++ > 0 || b++ >0);//true
system.out.println(a);//2
system.out.println(b);//2

短路逻辑运算符:||如果左边为真,右边不执行。

int a = 1;
int b = 2;
System.out.println(a++ < 0 && b++ >0);//true
system.out.println(a);//2
system.out.println(b);//2

短路运算符:&&如果左边为假,右边不执行。

3.逻辑非 !

语法规则:! 表达式

真变假,假变真。

int a = 1;
System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
System.out.println(!(a != 1)); // a != 1 为false,取个非就是true

注意事项:

  • 表达式都必须是布尔类型的。

六、赋值运算符

用于将值分配给变量。

  • =:赋值
  • +=:加并赋值
  • -=:减并赋值
  • *=:乘并赋值
  • /=:除并赋值
  • %=:取模并赋值

该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。

int x = 10;
x += 3;//13
x -= 3;//10
x *= 3;//30
x /= 3;//10
x %= 3;//1

注意事项:

  • 赋值运算符都是先把左边的计算完,在赋值给右边。x += 3+5是等价于x = x + (3 + 5)

七、自增、自减运算符

用于增加或减少变量的值。

  • ++:自增
  • --:自减
int a = 3;
int b = a++;
System.out.println(a);//4
System.out.println(b);//3

int c = 3;
int d = --c;
System.out.println(c);//2
System.out.println(d);//2

后置++或者–都是先使用变量原来的值,然后在加加或者减减。

前置++或者–都是先加加或者减减,在使用变量的加加减减的值。

注意事项:

  • 如果单独使用,前置和后置没有区别。
  • 只有变量才能使用自增或者自减运算符。
  • 自增/自减运算可以用于整数类型 byte、short、int、long,浮点类型 float、double,以及字符串类型 char。
  • 在 Java 1.5 以上版本中,自增/自减运算可以用于基本类型对应的包装器类 Byte、Short、Integer、Long、Float、Double 和 Character。

八、位运算符

用于执行位级别的操作。

  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位非
  • <<:左移
  • >>:带符号右移
  • >>>:无符号右移

1.按位与 &

对两个操作数的每个位执行与操作,只有两个操作数的对应位都为1时,结果位才为1。例如,1101 & 1010 的结果是 1000

2.按位或 |

对两个操作数的每个位执行或操作,只要两个操作数的对应位中有一个为1,结果位就为1。例如,1101 | 1010 的结果是 1111

3.按位异或 ^

对两个操作数的每个位执行异或操作,只有两个操作数的对应位不相同时,结果位才为1。例如,1101 ^ 1010 的结果是 0111

重要结论:

  • a ^ 0等于a。
  • a^a等于0.

4.按位非~

对单个操作数的每个位执行非操作,将0变为1,将1变为0。例如,~1101 的结果是 0010

5.左移<<

将操作数的二进制位向左移动指定的位数,右侧用0填充。例如,5 << 2 的结果是 20,因为 5 的二进制表示是 101,左移两位后变成 10100,即十进制的 20。左移几位就是相当于乘以2^n。

6.带符号右移>>

将操作数的二进制位向右移动指定的位数,根据最高位的值用0或1填充。这保持了有符号数的符号(正负号)。例如,-8 >> 1 的结果是 -4,因为 -8 的二进制表示是 11111111111111111111111111111000,带符号右移1位后变成 11111111111111111111111111111100,即十进制的 -4

7.无符号右移>>>

类似于带符号右移,但不保留符号位,始终用0填充。这适用于无符号整数。例如,-8 >>> 1 的结果是 2147483644,因为它的二进制表示与带符号右移相同,但不考虑符号。

注意事项:

  • 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
  • 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
  • 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
  • 移动负数位或者移位位数过大都没有意义.

九、三目运算符(条件运算符)

条件运算符只有一个:

表达式1 ? 表达式2 : 表达式3

当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;

当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.

也是 Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法

// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;

注意事项:

  • 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换
  • . 表达式不能单独存在,其产生的结果必须要被使用

十、实例关系运算符

用于比较对象引用。

  • instanceof:检查对象是否是特定类的实例

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

String name = "James";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

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

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

十一、类型转换运算符

用于将值从一种类型转换为另一种类型。

  • (type):强制类型转换
long a = 10;
int b = (int)a;

十二、运算符优先级

在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同,比如:* 和 / 的优先级要高于 +和 - ,有些情况下稍不注意,可能就会造成很大的麻烦。

只需要记住:在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同,比如:* 和 / 的优先级要高于 +和 - ,有些情况下稍不注意,可能就会造成很大的麻烦。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值