Java运算符
创始人
2024-06-02 03:44:51
0次

在这里插入图片描述

文章目录

  • 运算符分类
    • 算术运算符
    • 赋值运算符
    • 比较(关系)运算符
    • 逻辑运算符
    • 条件运算符
  • 运算符优先级

运算符分类

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

运算符的分类:
按照功能分为:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算
符、条件运算符、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);// 21System.out.println(c); // 21System.out.println(d++); // 20System.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=10System.out.println("a=" + a);// a=11c = ++a; // a=12System.out.print("c=" + c);// c=12System.out.println("a=" + a);// a=12c = b--;// c=20System.out.print("c=" + c);// c=20System.out.println("b=" + b);// b=19c = --b; // c=18System.out.print("c=" + c);// c=18System.out.println("b=" + b);// b=18}
}

赋值运算符

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

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

算符符号解释
+=将符号左边的值和右边的值进行相加操作,最后将结果赋值给左边的变量
-=将符号左边的值和右边的值进行相减操作,最后将结果赋值给左边的变量
*=将符号左边的值和右边的值进行相乘操作,最后将结果赋值给左边的变量
/=将符号左边的值和右边的值进行相除操作,最后将结果赋值给左边的变量
%=将符号左边的值和右边的值进行取余操作,最后将结果赋值给左边的变量
int i = 1;i *= 0.1;System.out.println(i);//0i++;System.out.println(i);//1int m = 2;int n = 3;n *= m++; //n = n * m++;System.out.println("m=" + m);//3System.out.println("n=" + n);//6int 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)); //falseSystem.out.println((a > b) & (a < c)); //falseSystem.out.println((a < b) & (a > c)); //false
  • | 和 || :表示"或"关系,当符号两边布尔值有一边为 true 时,结果为true。当两边都为 false时,结果为 false
System.out.println((a > b) | (a > c)); //falseSystem.out.println((a > b) | (a < c)); //trueSystem.out.println((a < b) | (a > c)); //trueSystem.out.println((a < b) | (a < c)); //true
  • ! :表示"非"关系,当变量布尔值为 true 时,结果为 false。当变量布尔值为 false 时,结果为 true。
System.out.println(!false);
  • ^ :当符号左右两边布尔值不同时,结果为 true。当两边布尔值相同时,结果为 false。
System.out.println((a > b) ^ (a > c)); //falseSystem.out.println((a > b) ^ (a < c)); //trueSystem.out.println((a < b) ^ (a > c)); //trueSystem.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 2int 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 2int 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位赋值运算符&=、|=、<<=、>>=、>>>=
  • 不要过多的依赖运算的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用()来控制表达式的执行顺序
  • 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...