java基础-运算符

2024-03-01

算术运算符

+ - *
/
	除
	得到的是商
%
	取模(取余)
	结果的正负与被模数相关
		- 12 / 5 = -2
		12 / -5 = 2
++  --
	不会改变本身变量的数据类型
	当达到数据类型的最大值时,结果为数据类型的最小值
	当达到数据类型的最小值时,结果为数据类型的最大值

赋值运算符

+= -= *= /= %=
	不会改变本身变量的数据类型
	当达到数据类型的最大值时,结果为数据类型的最小值
	当达到数据类型的最小值时,结果为数据类型的最大值

逻辑运算符

只能用在boolean上


& 逻辑与 && 短路与
	&运算,当第一个表达式为false时,第二个表达式依然会执行 
	&& 当第一个表达式为false时,第二个表达式不会执行
| 逻辑或 || 短路或  
	|运算 当第一个表达式为true时,第二个表达式依然会执行
	|| 当第一个表达式为true时,第二个表达式不会执行
! 逻辑非
^ 逻辑异或
	当两个表达式一个为true,一个为false时返回true

位运算符

整数的运算
	以二进制做运算
<< 左移
	整个位向左移动,右侧补0
	向左移n位,相当于对初始值*2的n次幂 21 << n  21 * 2^n
	当移动导致最高位由0变为1或由1变为0时,数据会发生大变化
>> 右移
	整个位向右移动,左侧最高位为0则补0,为1则补1
	向右移n位,相当于对初始值/2的n次幂 21 >> n  21 / 2^n,不能超过一定范围
>>> 无符号右移
	整个位向右移动,左侧最高位补0
& 与运算
	两个二进制数据,相同位都为1则为1,否则为0
| 或运算
	两个二进制数据,同位有1就为1,否则为0
^ 异或运算
	两个二进制数据,同位不一样时为1,一样时为0
		交换两个数字的值
			int num1 = 12, num2 = 5;
			num1 = num1 ^ num2
				得到一个新值
			num2 = num1 ^ num2
				获取得是原num1的值
			num1 = num1 ^ num2
				获取得是原num2的值
~ 取反运算
	1变0,0变1

三目运算符?:


若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型。
假如表达式1和表达式2的类型不同,那么将进行类型提升,整个条件运算符结果的类型就是提升后的类型

==

对于引用数据类型,比较的是地址值


{/if}