Java中的运算符介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

运算符的分类:

  • 按照功能分为:算数运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符
分类运算符
算数运算符+、-、*、/、%、++、- -
赋值运算符=、+=、-=、*=、/=、%=、>>=、 <<=、>>>=、&=、
比较运算符>、>=、<、<=、==、! =
逻辑运算符&、
位运算符&、
条件运算符(条件表达式)?结果1:结果2
Lambda运算符- >
  • 按照操作数个数分为:一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符(三目运算符)
分类运算符
一元运算符(单目运算符)正号(+)、负号(-)、++、- -、!、~
二元运算符(双目运算符)除了一元和三元运算符剩下的都是二元运算符
三元运算符(三目运算符、条件运算符)(条件表达式)?结果1:结果2

算数运算符

在这里插入图片描述

int num1 = 12;
int num2 = 5;
System.out.println(num1 % num2); //结果2

int num3 = -12;
int num4 = 5;
System.out.println(num3 % num4); //结果-2

int num5 = 12;
int num6 = -5;
System.out.println(num5 % num6); //结果2

int num7 = 12;
int num8 = -5;
System.out.println(num7 % num8); //结果-2

🍀 结论:取模以后,结果与被模数的符号相同

int num1 = 10;
int num2 = ++num1;
System.out.println(num1); //num1 = 11,num2 = 11

int num1 = 10;
int num2 = num1++;
System.out.println(num1); //num1 = 11,num2 = 10

int i = 10;
++i; 等于 i++;
System.out.println(i); //i=11
//计算89小时是多少天多少小时
int hours = 89;
int day = hours / 24;
int hour = hours % 24;
System.out.println(day + "天零" + hour + "小时");  //3天零17小时

💢 ++ 或 - - 不会改变变量的数据类型

赋值运算符

  • 符号:=
    • 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原理进行处理
    • 支持连续赋值
  • 扩展赋值运算符:+=、-=、*=、/=、%=
赋值运算符符号解释
+=将符号左边的值和右边的值进行相加操作,最后将结果赋值给左边的变量
-=将符号左边的值和右边的值进行相减操作,最后将结果赋值给左边的变量
*=将符号左边的值和右边的值进行相乘操作,最后将结果赋值给左边的变量
/=将符号左边的值和右边的值进行相除操作,最后将结果赋值给左边的变量
%=将符号左边的值和右边的值进行取余操作,最后将结果赋值给左边的变量
int num1 = 10;
num1 += 5; //类似于 num1 = num1 + 5
System.out.println(num1);  //15

int num2 = 1;
num2 *= 0.1; //类似于 num2 = (int)(num2 * 0.1)
System.out.println(num2);  //0.1

//如何实现变量的值增加2
int num1 = 10;
num1 += 2;
System.out.println(num1); 

int n=2;
int m=3;
n *= m++; //相当于 n= n * m++;
System.out.println(n); //6
int n=10;
n += (n++) + (++n);
System.out.println(n); //32
根据这个表达式的计算顺序,先计算括号内的 (n++) + (++n),
先算 n++,此时 n 的值为 10,然后 n 值加一,
变成 11,再算 ++n,此时 n 的值为 12,
所以 (n++) + (++n) 的结果为 10 + 12 = 22。
然后再将 n 的值加上 22,所以最终 n 的值为 32

比较运算符

运算符运算范例结果
==相等于4==3false
!=不等于4!=3true
<小于4<3false
>大于4>3true
< =小于等于4< =3false
> =大于等于4> =3true
instanceof检查是否是类的对象“Hello” instanceof Stringtrue
  • 比较运算符的结果都是Boolean,也就是要么是true,要么是false

  • > < ≥ ≤ :只适用于基本数据类型(除Boolean类型之外)

  • == != :适用于基本数据类型和引用数据类型

逻辑运算符

  Java中常用的逻辑运算符有三种:&&(逻辑与)、||(逻辑或)和(逻辑非)。逻辑运算符用于对两个或多个布尔型变量进行比较,并返回一个布尔型结果。下面是Java中逻辑运算符的介绍:

  • &&(逻辑与):当且仅当两个操作数都为true时,结果才为true,否则结果为false
  • ||(逻辑或):当且仅当两个操作数都为false时,结果才为false,否则结果为true
  • !(逻辑非):操作数为true则结果为false,操作数为false则结果为true

  逻辑运算符通常用于控制程序的流程,例如在if语句和while循环语句中。下面是一个逻辑运算符的例子:

public class Main {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        boolean c = true;
        boolean result1 = a && b;  // false
        boolean result2 = a || b;  // true
        boolean result3 = !a;  // false
        boolean result4 = (a && b) || c;  // true
        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);
        System.out.println(result4);
    }
}

  在这个例子中,我们声明了三个布尔型变量abc,并对它们进行了一些逻辑运算。例如,使用逻辑与运算符&&ab进行比较,结果为false。使用逻辑或运算符||ab进行比较,结果为true。使用逻辑非运算符!a进行取反,结果为false。最后,我们使用逻辑运算符组合了多个表达式,例如(a && b) || c,结果为true

  总之,Java中常用的逻辑运算符有三种:&&(逻辑与)、||(逻辑或)和(逻辑非)。逻辑运算符用于对两个或多个布尔型变量进行比较,并返回一个布尔型结果。逻辑运算符通常用于控制程序的流程,例如在if语句和while循环语句中。

位运算符

在这里插入图片描述

在Java中,位运算符用于对二进制数进行操作。Java中常用的位运算符有六种:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)和>>(右移)。下面是Java中位运算符的介绍:

  • &(按位与):对两个二进制数进行与运算,只有当两个数对应的二进制位都是1时,结果的对应位才是1,否则为0。
    • 1 & 1 结果为 1
    • 1 & 0 结果为 0
    • 0 & 1 结果为 0
    • 0 & 0 结果为 0
  • |(按位或):对两个二进制数进行或运算,只有当两个数对应的二进制位都是0时,结果的对应位才是0,否则为1。
    • 1 | 1 结果为 1
    • 1 | 0 结果为 1
    • 0 | 1 结果为 1
    • 0 | 0 结果为 0
  • ^(按位异或):对两个二进制数进行异或运算,只有当两个数对应的二进制位不同时,结果的对应位才是1,否则为0。
    • 1 ^ 1 结果为0
    • 1 ^ 0 结果为1
    • 0 ^ 1 结果为1
    • 0 ^ 0 结果为0
  • ~(按位取反):对一个二进制数进行取反运算,将其每个二进制位取反。
  • <<(左移):将一个二进制数向左移动指定的位数,低位补0。
  • >>(右移):将一个二进制数向右移动指定的位数,高位补符号位(即正数补0,负数补1)。

位运算符通常用于在程序中进行位操作,例如对二进制数进行拼接、截取等操作。下面是一个位运算符的例子:

public class Main {
    public static void main(String[] args) {
        int a = 0b00000010;  // 二进制数2
        int b = 0b00000011;  // 二进制数3
        int c = a & b;  // 按位与运算,结果为2
        int d = a | b;  // 按位或运算,结果为3
        int e = a ^ b;  // 按位异或运算,结果为1
        int f = ~a;  // 按位取反运算,结果为-3
        int g = a << 2;  // 左移2位,结果为8
        int h = b >> 1;  // 右移1位,结果为1
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
        System.out.println(g);
        System.out.println(h);
    }
}

在这个例子中,我们声明了两个二进制数ab,分别为0b000000100b00000011。然后,我们对它们进行了一些位运算,例如使用按位与运算符&ab进行比较,结果为2。使用按位或运算符|ab进行比较,结果为3。使用按位异或运算符^ab进行比较,结果为1。使用按位取反运算符~a进行取反,结果为-3。使用左移运算符<<a左移2位,结果为8。使用右移运算符>>b右移1位,结果为1

总之,Java中的位运算符用于对二进制数进行操作。Java中常用的位运算符有六种:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)和>>(右移)。位运算符通常用于在程序中进行位操作,例如对二进制数进行拼接、截取等操作。

说明:

  • << >> >>> & | ^ ~ :针对数值类型的变量或常量进行运算,运算的结果也是数值
  • <<:每向左一动一位,结果就在原有的基础上 * 2
  • >>:每向右一动一位,结果就在原有的基础上 / 2
int num = 7;
System.out.println("num << 1 :" + (num << 1)); //14
System.out.println("num << 2 :" + (num << 2)); //28
System.out.println("num << 3 :" + (num << 3)); //36

在这里插入图片描述

在这里插入图片描述

右移>>:

-69 >> 4 类似于 -69/2的4次 = -69/16 = -5
在这里插入图片描述

69 >> 4 类似于 69/2的4次 = 69/16 = 5

在这里插入图片描述

💢 注意:如果不能整除,向下取整

题:如何交换两个int型变量的值?String呢?

int n = 10;
int m = 20;
//方式一:声明一个临时变量(推荐使用)
				int temp = m;
				m = n;
				n = temp;
				System.out.println("m ="+m+",n ="+n);
//方式二:优点:不需要定义临时变量 缺点:适用性差(不适用于非数值类型)、可能超出int范围
        m = n + m;
        n = m - n;
        m = m - n;
        System.out.println("m ="+m+",n ="+n);
//方式二:优点:不需要定义临时变量 缺点:适用性差(不适用于非数值类型)
        m = n ^ m;
        n = m ^ n;
        m = m ^ n;
        System.out.println("m ="+m+",n ="+n);

条件运算符(三元运算符)

(条件表达式)?表达式1:表达式2
  • 条件表达式是Boolean类型的结果,根据Boolean的值选择表达式1或表达式2
    • 条件表达式结果为true则运行表达式1
    • 条件表达式结果为false则运行表达式2

文章总结:

  这篇文档介绍了Java中的逻辑运算符和位运算符。逻辑运算符包括&&(逻辑与)、||(逻辑或)和!(逻辑非),用于比较布尔型变量并返回布尔型结果。位运算符用于对二进制数进行操作,包括&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)和>>(右移)。位运算符通常用于在程序中进行位操作,例如对二进制数进行拼接、截取等操作。此外,文档还介绍了条件运算符(三元运算符)的用法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秋枫 ~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值