Java运算符

在这里插入图片描述

运算符分类

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

运算符的分类:
按照功能分为:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算
符、条件运算符、Lambda 运算符

分类运算符
算术运算符(7 个)+、-、*、/、%、++、–
赋值运算符(12 个)=、+=、-=、*=、/=、%=、>>=、<<=、>>>=
&=、=、^=等
比较(或关系)运算符>、>=、<、<=、==、!= (6个)
逻辑运算符(6 个)&、|、||、!、&&、 ^
位运算符(7 个)&、|、^、~、<<、>>、>>>
条件运算符(1 个)(条件表达式)?结果 1:结果 2
Lambda 运算符“转到”或者 “成为”

按照操作数个数分为:
一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目运算符)

分类运算符
一元运算符(单目运算符)正号(+)、负号(-)、++、–、!、~
二元运算符(双目运算符)除了一元和三元运算符剩下的都是二元运算符
三元运算符 (三目运算符)(条件表达式)?结果 1:结果 2

算术运算符

算术运算符

++变量变量++

案例1、


public class hello {
    public static void main(String[] args) {
        int a = 10;

        int b = a++;
        System.out.println(a);
        System.out.println(b);
        System.out.println("==========");

        int c = 20;
        int d = 20;

        System.out.println(++c);// 21
        System.out.println(c); // 21
        System.out.println(d++); // 20
        System.out.println(d); // 21
    }
}

案例2、


public class hello {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a++;
        System.out.print("c=" + c); // c=10
        System.out.println("a=" + a);// a=11
        c = ++a; // a=12
        System.out.print("c=" + c);// c=12
        System.out.println("a=" + a);// a=12
        c = b--;// c=20
        System.out.print("c=" + c);// c=20
        System.out.println("b=" + b);// b=19
        c = --b; // c=18
        System.out.print("c=" + c);// c=18
        System.out.println("b=" + b);// b=18
    }
}

赋值运算符

符号: =
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。

扩展赋值运算符: +=、 -=、*=、 /=、%=

算符符号解释
+=将符号左边的值和右边的值进行相加操作,最后将结果赋值给左边的变量
-=将符号左边的值和右边的值进行相减操作,最后将结果赋值给左边的变量
*=将符号左边的值和右边的值进行相乘操作,最后将结果赋值给左边的变量
/=将符号左边的值和右边的值进行相除操作,最后将结果赋值给左边的变量
%=将符号左边的值和右边的值进行取余操作,最后将结果赋值给左边的变量

	int i = 1;
	i *= 0.1;
	System.out.println(i);//0
	i++;
	System.out.println(i);//1

	int m = 2;
	int n = 3;
	n *= m++; //n = n * m++;
	System.out.println("m=" + m);//3
	System.out.println("n=" + n);//6

	int n = 10;
	n += (n++) + (++n); //n = n + (n++) + (++n)
	System.out.println(n);//32
	

比较(关系)运算符

比较运算符的结果都是 boolean 型,也就是要么是 true,要么是 false

在这里插入图片描述

逻辑运算符

逻辑运算符,操作的都是 boolean 类型的变量或常量,而且运算得结果也是 boolean 类型的值。

在这里插入图片描述

  • & 和 &&:表示"且"关系,当符号左右两边布尔值都是 true 时,结果才能为 true。否则,为 false

    int a = 1;
    int b = 2;
    int c = 3;
	System.out.println((a > b) & (a > c)); //false
	System.out.println((a > b) & (a < c)); //false
	System.out.println((a < b) & (a > c)); //false
	
  • | 和 || :表示"或"关系,当符号两边布尔值有一边为 true 时,结果为true。当两边都为 false时,结果为 false

	System.out.println((a > b) | (a > c)); //false
	System.out.println((a > b) | (a < c)); //true
	System.out.println((a < b) | (a > c)); //true
	System.out.println((a < b) | (a < c)); //true
	
  • ! :表示"非"关系,当变量布尔值为 true 时,结果为 false。当变量布尔值为 false 时,结果为 true

	System.out.println(!false);
	
  • ^ :当符号左右两边布尔值不同时,结果为 true。当两边布尔值相同时,结果为 false

    System.out.println((a > b) ^ (a > c)); //false
    System.out.println((a > b) ^ (a < c)); //true
    System.out.println((a < b) ^ (a > c)); //true
    System.out.println((a < b) ^ (a < c)); //false
        

“&” 和 “&&” 区别 :

  • 相同点:如果符号左边是 true,则二者都执行符号右边的操作
  • 不同点:& : 如果符号左边是 false,则继续执行符号右边的操作
  • && :如果符号左边是 false,则不再继续执行符号右边的操作
  • 建议:开发中,推荐使用 &&
        int a = 1;
        int b = 1;
        if (a++ == 2 & ++b == 2) {
        a = 7;
        }
        System.out.println("a=" + a + ",b=" + b); //2 2
        
        int a = 1, b = 1;
        if (a++ == 2 && ++b == 2) {
            a = 7;
        }
        System.out.println("a=" + a + ",b=" + b); //2 1
        

“|”和“||” 区别 :

  • 相同点:如果符号左边是 false,则二者都执行符号右边的操作
  • 不同点:| : 如果符号左边是 true,则继续执行符号右边的操作
  • || :如果符号左边是 true,则不再继续执行符号右边的操作
  • 建议:开发中,推荐使用 ||

	int x = 1,y = 1;
	if(x++==1 | ++y==1){
		x =7;
	}
	System.out.println("x="+x+",y="+y); // 7 2
	int x = 1,y = 1;
	if(x++==1 || ++y==1){
		x =7;
	}
	System.out.println("x="+x+",y="+y); //7 1

条件运算符

条件运算符格式:
(条件表达式)? 表达式 1 : 表达式 2


	int n1 = 1;
 	int n2 = 2;
 	int n3 = 3;
	int tempMax = (n1 > n2)? n1:n2;
	int finalMax = (tempMax > n3)? tempMax : n3;
 	System.out.println("三个数中最大值为:" + finalMax);
 

运算符优先级

优先级运算符说明Java 运算符
1括号()、[]、{}
2正负号+、-
3单元运算符++、–、~、!
4乘法、除法、求余*、/、%
5加法、减法+、-
6移位运算符<<、>>、>>>
7关系运算符<、<=、>=、>、instanceof
8等价运算符==、!=
9按位与&
10按位异或^
11按位或|
12条件与&&
13条件或
14三元运算符? :
15赋值运算符=、+=、-=、*=、/=、%=
16位赋值运算符&=、|=、<<=、>>=、>>>=
  • 不要过多的依赖运算的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用()来控制表达式的执行顺序
  • 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

@才华有限公司

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

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

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

打赏作者

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

抵扣说明:

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

余额充值