Java中的运算符你真的了解了吗?

Java中的运算符你真的了解了吗?,第1张

哈喽,大家好!我是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);
    }
}
🌈运行结果

🌈解释

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

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

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

🎯关系运算符
关系(比较)运算符使用方式含义
> *** 作数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
00001
01011
10010
11110
🐳位逻辑运算符

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

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

位逻辑运算符使用方式含义
&(逻辑与) *** 作数1 & *** 作数20 和任何二进制位(0 或者1)进行 &运算,结果都是0;和1进行 &运算的结果均为原值
|(逻辑或) *** 作数1 | *** 作数20 和任何二进制位(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变量追加20
		System.out.println(k); // 30

		int 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); // 200

		y -= 100; // x = x - 100;
		System.out.println(y); // 100

		y *= 10; // x = x * 10;
		System.out.println(y); // 1000

		y /= 30; // x = x / 30;
		System.out.println(y); // 33

		y %= 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语句
		// 表示声明一个变量,起名i
		int 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中的运算符有了进一步的了解,相关的案例还是建大家去实 *** 一波来加深印象。另外,我自己整理了一些自资源(笔记、书籍、软件等)分享在我的公众号上,非常欢迎大家来访白嫖和博主做朋友,一起学习进步!最后别忘啦支持一下博主哦,求三连!❤️❤️❤️

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/941911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存