> 文档中心 > Java中的运算符你真的了解了吗?(包含详细的案例解释)

Java中的运算符你真的了解了吗?(包含详细的案例解释)


哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在CSDN上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。
本文主要讲解Java中的运算符,详见目录。如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬
✨✨✨个人主页:java-WangHY

文章目录

    • 🌾算术运算符
        • ✨递增递减运算符
        • 📈符号在前后的区别
          • 🌈例子
          • 🌈运行结果
          • 🌈解释
    • 🎯关系运算符
          • 🏓一个原则
    • 🍎逻辑运算符
        • 💎逻辑运算真值表(1真0假)
    • 🐳位逻辑运算符
      • 🥝短路与和逻辑与的区别
    • 🧣赋值运算符
        • 🎽🎽综合例子
    • 🤙字符串连接运算符
        • 🐢例子
    • 📈三目运算符
        • 🎯例子
        • 🤡写在最后

🌾算术运算符

算术运算符 使用方式 含义
减号运算符 - 操作数1 + 操作数2 操作数1 加上 操作数2
加号运算符 + 操作数1 - 操作数2 操作数1 减去 操作数2
乘号运算符 * 操作数1 * 操作数2 操作数1 减去 操作数2
除号运算符 / 操作数1 / 操作数2 操作数1 减去 操作数2
百分号运算符 % 操作数1 % 操作数2 操作数1 减去 操作数2

✨递增递减运算符

自增自减运算符 使用方法 含义
++ 操作数 ++(后置递增) 运行表达式后再将操作数加一
++ ++ 操作数(前置递增) 运行表达式前将操作数先加一
操作数 --(后置递减) 运行表达式后再将操作数减一
– 操作数(前置递减) 运行表达式前将操组数先减一

📈符号在前后的区别

🌈例子
package com.blog;/ * @Author jinhuan * @Date 2022/2/15 * * about ++ --运算符 */public class Test {    public static void main(String[] args) { int a = 100; int b = 100; System.out.println("加号运算符在前时,a的值为——>"+(++a)); System.out.println("加号运算符在后时,b的值为——>"+(b++)); System.out.println("运算结束后,a的值是——>"+a); System.out.println("运算结束后,b的值是——>"+b);    }}
🌈运行结果

Java中的运算符你真的了解了吗?(包含详细的案例解释)

🌈解释

自增或者自减运算符在前的时候,会先对改变量进行自增或者自减,而后进行相关的赋值运算

在后的时候,则会优先按照该变量的值进行相关的赋值计算,在最后的时候进行自减或者自加

但是,不管怎样,在改行代码运行结束的时候,该变量的值都会进行变化,自增或者自减一

🎯关系运算符

关系(比较)运算符 使用方式 含义
> 操作数1 > 操作数2 操作数1 大于 操作数2
< 操作数1 < 操作数2 操作数1 小于 操作数2
>= 操作数1 >= 操作数2 操作数1 大于或等于 操作数2
<= 操作数1 <= 操作数2 操作数1 小于或等于 操作数2
== 操作数1 == 操作数2 操作数1 等于 操作数2
!= 操作数1 != 操作数2 操作数1 不等于 操作数2
🏓一个原则

所有的关系运算的结果都是布尔值,即true或者false

🍎逻辑运算符

逻辑运算符 使用方式 含义
&&(短路与) 操作数1 && 操作数2 操作数1和2的值均为true,最终的运算结果也为true(一假为假,同真为真)
||(短路或) 操作数1 || 操作数2 操作数1或2的值有一个为true,最终的结果就为true(一真为真,同假为假)
!(逻辑非) ! 操作数 操作数为false(即真为假,假为真)

💎逻辑运算真值表(1真0假)

操作数1 操作数2 操作数1 && 操作数2 操作数1 || 操作数2 !操作数1
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0

🐳位逻辑运算符

​ 位逻辑运算符的运算规则主要是靠二进制的运算规则

​ 可以把java中靠着操作数的真值(即布尔值 0 或者1)视为二进制数字进行运算

位逻辑运算符 使用方式 含义
&(逻辑与) 操作数1 & 操作数2 0 和任何二进制位(0 或者1)进行 &运算,结果都是0;和1进行 &运算的结果均为原值
|(逻辑或) 操作数1 | 操作数2 0 和任何二进制位(0 或者1)进行 |运算,结果都是原值;和1进行 |运算的结果均为1
~(取反) ~ 操作数 即对原值取反值,0 为 1,1 为 0
^(异或) 操作数1 ^ 操作数2 相同 值为 0 ,不同 值为 1

🥝短路与和逻辑与的区别

最重要的一点就是:逻辑与/或 不管怎样,前后都会进行判断短路与/或 从左到右进行判断,当前面的判断结果已经能决定最终结果的时候,    '就不再进行后续的判断'    比如:在进行 |(短路与)运算的时候,前式的运算结果为真,    那么不管后边的结果是真还是假,都不再进行判断

🧣赋值运算符

1、赋值运算符包括“基本赋值运算符”和“扩展赋值运算符”:基本的、扩展的。2、基本赋值运算符?= 注意:= 运算符右边的优先级比较高,在进行运算的时候会优先进行右边的运算 然后将运行后的结果赋值给左边。3、扩展的赋值运算符? += -= *= /= %=注意:扩展赋值运算符在编写的时候,两个符号之间不能有空格。 + =  错误的。 += 正确的。4、很重要的语法机制:     使用扩展赋值运算符的时候,'永远都不会改变运算结果类型'(下有实例讲解)byte x = 100; x += 1; x自诞生以来是byte类型,那么x变量的类型永远都是byte。不会变。 不管后面是多大的数字。

🎽🎽综合例子

public class OperatorTest04{public static void main(String[] args){// 赋值运算符“=”右边优先级比较高,先执行右边的表达式// 然后将表达式执行结束的结果放到左边的“盒子”当中。(赋值)int i = 10;// 重新赋值i = 20;byte b = 10;b = 20;/*以 += 运算符作为代表,学习扩展赋值运算符。其它的运算符,例如:-= *= /= %= 和 += 原理相似。*/int k = 10;k += 20; // k变量追加20System.out.println(k); // 30int m = 10;// += 运算符类似于下面的表达式m = m + 20;System.out.println(m); // 30// 研究:// i += 10 和 i = i + 10 真的是完全一样吗?// 答案:不一样,只能说相似,其实本质上并不是完全相同。byte x = 100; // 100没有超出byte类型取值范围,可以直接赋值System.out.println(x); // 100// 分析:这个代码是否能够编译通过?// 错误: 不兼容的类型: 从int转换到byte可能会有损失//x = x + 1; // 编译器检测到x + 1是int类型,int类型可以直接赋值给byte类型的变量x吗?// 使用扩展赋值运算符可以吗?// 可以的,所以得出结论:x += 1 和 x = x + 1不一样。// 其实 x += 1 等同于:x = (byte)(x + 1);x += 1;System.out.println(x); // 101// 早就超出byte的取值范围了。x += 199; // x = (byte)(x + 199);System.out.println(x); // 44 (当然会自动损失精度了。)int y = 100;y += 100;System.out.println(y); // 200y -= 100; // x = x - 100;System.out.println(y); // 100y *= 10; // x = x * 10;System.out.println(y); // 1000y /= 30; // x = x / 30;System.out.println(y); // 33y %= 10; // x = x % 10;System.out.println(y); // 3}}

🤙字符串连接运算符

+ 运算符:1+ 运算符在java语言中有两个作用。作用1:求和作用2:字符串拼接2、什么时候求和?什么时候进行字符串的拼接呢?当 + 运算符两边都是数字类型的时候,求和。当 + 运算符两边的'任意一边'是字符串类型,那么这个 + 会进行字符串拼接操作。3、注意:字符串拼接完之后的结果还是一个字符串。

🐢例子

public class Test{public static void main(String[] args){// 定义一个年龄的变量。int age= 35;// + 在这里会进行字符串的拼接操作。System.out.println("年龄 = " + age); // "年龄 = 35"int a = 10;int b = 20;// 这里的 + 两边都是数字,所以加法运算int c = a + b;System.out.println(c); // 30// 注意:当一个表达式当中有多个加号的时候// 遵循“自左向右”的顺序依次执行。(除非额外添加了小括号,小括号的优先级高)// 第一个+先运算,由于第一个+左右两边都是数字,所以会进行求和。// 求和之后结果是300,代码就变成了:System.out.println(30 + "11");// 那么这个时候,由于+的右边是字符串"11",所以此时的 + 会进行字符串拼接。System.out.println(a + b + "11"); // 最后一定是一个字符串:"3011"// 先执行小括号当中的程序:b + "11",这里的+会进行字符串的拼接,// 拼接之后的结果是:"2011",这个结果是一个字符串类型。// 代码就变成了:System.out.println(a + "2011");// 这个时候的+还是进行字符串的拼接。最终结果是:"102011"System.out.println(a + (b + "11"));// 在控制台上输出"10+200=3"System.out.println("10+20=30"); // 不是这样整体输出// 以下有效的运算符加号一共有4个,这4个加号都是字符串拼接操作。System.out.println(a + "+" + b + "=" + c);// 分析这个结果是多少?// 以下表达式中没有小括号,所以遵循自左向右的顺序依次执行。// 第1,2,3,4个加号都是进行字符串拼接,拼接之后的结果是:"10+20=10"// 前4个加号运行之后是一个字符串"10+20=10"// 然后这个字符串再和最后一个b变量进行字符串的拼接:"10+20=1020"System.out.println(a + "+" + b + "=" + a + b);// 和上面程序不一样的地方是:最后一个加号先执行,并且会先进行求和运算。System.out.println(a + "+" + b + "=" + (a + b));// 在java语言中怎么定义字符串类型的变量呢?// int是整数型 i 是变量名 10是字面量//int i = 10;// String是字符串类型,并且String类型不属于基本数据类型范畴,属于引用类型。// name是变量名,只要是合法的标识符就行。// "jack" 是一个字符串型字面量。String name = "李四"; // String类型是字符串类型,其中S是大写,不是:string// 错误:类型不兼容。//String name = 100;// 会进行字符串的拼接//System.out.println("欢迎" + name + "回来");// 口诀:加一个双引号"",然后双引号之间加两个加号:"++",然后两个加号中间加变量名:"+name+"System.out.println("欢迎"+name+"回来");System.out.println(a + "+" + b + "=" + c);}}

📈三目运算符

语法格式
’ 布尔表达式 ? 表达式1 : 表达式2 ’
执行原理
布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果。
布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果

🎯例子

public class Test{public static void main(String[] args){// 合法的java语句// 表示声明一个变量,起名iint i = 100;// 这里会编译出错吗?// 错误: 不是语句// 100;// 错误: 不是语句//'男';boolean sex = true;// 分析以下代码是否存在语法错误?// 错误: 不是语句//sex ? '男' : '女';// 前面的变量的c的类型不能随意编写。// 最终的计算结果是字符型,所以变量也需要使用char类型。char c = sex ? '男' : '女';System.out.println(c);// 实际开发中不会这样,故意的//错误: 不兼容的类型: 条件表达式中的类型错误//char x = sex ? '男' : "女";//System.out.println(x);// 这样可以吗?可以sex = false;System.out.println(sex ? '男' : "女");//System.out.println(这里什么类型的数据都能放);}}

🤡写在最后

相信通过这篇文章,你已经对Java中的运算符有了进一步的了解,相关的案例还是建大家去实操一波来加深印象。另外,我自己整理了一些自资源(笔记、书籍、软件等)分享在我的公众号上,非常欢迎大家来访白嫖和博主做朋友,一起学习进步!最后别忘啦支持一下博主哦,求三连!❤️❤️❤️
Java中的运算符你真的了解了吗?(包含详细的案例解释)
Java中的运算符你真的了解了吗?(包含详细的案例解释)