【尚硅谷-Java学习】2.3运算符

1.算数运算符

正 +
负 -
加 +
减 -
乘 *
除 /
取余 %:结果正负与被取余的符号相同,例如6 % -5 = 1
自增 ++:
前++:先自增1,再运算
后++:先运算,再自增1
自增1不会改变变量本身的数据类型。使用num + 1的方式则会改变:例如short类型 + 1 会自动转换成int。
自减 --:
前–:先自减1,再运算
后–:先运算,再自减1

2.赋值运算符

=:两测数据类型不同时,可以使用自动类型转换或强制类型转换。支持连续赋值。

int i1 = i2 = 10;
int i3 = 10,i4 = 20;

不会改变变量本身的数据类型:
+=
-=
*=
/=
%=

3.比较运算符

比较运算符的结果都是布尔型:true、false

==
!=
<
>
<=
>=
instanceof 检查是否是类的对象

4.逻辑运算符

&:逻辑与
&&:短路与,结果与&相同,不同在于,当符号左边是false,右边不会执行。推荐使用
|:逻辑或
||:短路或,结果与|相同,不同在于,当符号左边是true,右边不会执行。推荐使用
!:逻辑非
^:逻辑异或:相同为false,不同为true

5.位运算符

位运算符操作的都是整型数据
<<:左移,例如左移3位i << 3,相当于i乘2的3次幂
>>:右移,右移一位相当于 / 2
>>>:无符号右移,无论最高位是0还是1,都补0
&:与
|:或
^:异或
~:取反

位运算符练习:交换两个变量的值。

		int num1 = 10;
		int num2 = 20;

方式一:临时变量


		int temp = num1;
		num1 = num2;
		num2 = temp;

方式二:
弊端:①相加操作可能超过存储范围。②只适用于数值类型。

		num1 = num1 + num2;
		num2 = num1 - num2;
		num1 = num1 - num2;

方式三:位运算符
好处:方式二相比不用担心超过存储范围。
仍然只适用于数值类型。

		num1 = num1 ^ num2;
		num2 = num1 ^ num2;//原num1的值赋给num2
		num1 = num1 ^ num2;

面试题:最高效的2*8的实现方式

2 << 3;
8 << 1;

6.三元运算符

(条件表达式)?表达式1:表达式2
条件表达式的结果是boolean类型,为true则执行表达式1,为false则执行表达式2.
练习:获得两个整数的较大值。

		int num1 = 10;
		int num2 = 20;
		int result = (num1>num2)?num1:num2;

三元运算符可以嵌套

		int num1 = 10;
		int num2 = 10;
		
		String s = (num1>num2) ? "num1大" : ((num1 == num2) ? "一样大":"num2大");
		System.out.println(s);

练习:获得三个整数的最大值。

		int num1 = 12;
		int num2 = 30;
		int num3 = -43;
		
		int bigger = (num1>num2)?num1:num2;
		int max = (bigger>num3)?bigger:num3;
		System.out.println(max);

凡是三元运算符都可以改写成 if - else,反之不成立。
三元运算符的效率比 if - else 效率高:优先选择三元运算符



运算符的优先级

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值