【JavaSE入门】:Java运算符及进制转换

导航🌌

目录

📀运算符分类

📀算术运算符

📀关系运算符

📀逻辑运算符

📀赋值运算符

📀三元运算符

📀运算符优先级

🍂进制介绍

🍂二进制转十进制

🍂八进制转十进制

🍂十六进制转十进制

🍂十进制转二进制

🍂十进制转八进制

🍂十进制转十六进制

🍂二进制转八进制

🍂二进制转十六进制

🍂八进制转二进制

🍂十六进制转二进制


📀运算符分类

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。主要有以下几类:

  1. 算术运算符
  2. 赋值运算符
  3. 关系运算符
  4. 逻辑运算符
  5. 位运算符
  6. 三元运算符

📀算术运算符

算术运算符一览表
运算符运算范例结果
+正号+77
-负号b = 11; -b-11
+9 + 918
-10 - 82
*7 * 856
/9 / 91
%取模(取余)11 % 92

++

++

自增(前置):先运算后取值

自增(后置):先取值后运算

a = 2; b = ++a

a = 2; b = a++

a = 3; b = 3

a = 3; b = 2

--

--

自减(前置):先运算后取值

自减(后置):先取值后运算

a = 2; b = --a

a = 2; b = a--

a = 1; b = 1

a = 1; b = 2

+字符串相加"Java" + "hehe""Javahehe"

比较特殊的就是底下的字符串相加,可试着运行以下代码体验一下:

public class Test{
	public static void main(String[] args){
		int n = 1992;
		String str1 = n + "";//int型转String类型
		String str2 = "Java" + "hehe";

		System.out.println(str1);
		System.out.println(str2);
		System.out.println("Java" + "hehe");
	}
}

输出结果:

细节说明:

  • 对于除号"/",它的整数除和小数除是有区别的;整数之间做除法时,只保留整数部分而舍弃小数部分
  • 当对一个数取余时,可以等价 a % b = a - a / b * b ,这是取模运算的本质。这里要留意Java中可以对浮点数取余,而C/C++只可操作整数

📀关系运算符

关系运算符一览表
运算符运算范例结果
==相当于8 == 7false
!=不等于8 != 7true
<小于8 < 7false
>大于8 > 7true
<=小于等于8 <= 7false
>=大于等于8 >= 7true
instanceof检查是否是类的对象"javahehe" instanceof Stringtrue

细节说明:

  • 关系运算符的结果都是boolean类型,即true或false
  • 关系运算符组成的表达式即关系表达式
  • 注意“==”和“=”的区别

📀逻辑运算符

逻辑运算符一览表
aba & ba && ba | ba || b!aa ^ b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse

细节说明:

  • 逻辑运算符用于链接多个条件(多个关系表达式),最终结果也是一个boolean类型
  • 短路与 && ,短路或 || ,取反 !
  • 逻辑与 & ,逻辑或 | ,逻辑异或 ^
  • 在开发中一般使用短路与、短路或,效率高
  • a ^ b: 叫逻辑异或, 当 a 和 b 不同时, 则结果为 true, 否则为 false
基本规则
名称语法特点
短路与 &&如果第一个条件为false,则第二个条件不会判断(执行),最终结果为false,效率高
逻辑与 &不管第一个条件是否为false,第二个条件都要判断(执行),效率低

短路或 ||

如果第一个条件为true,则第二个条件不会判断(执行),最终结果为true,效率高
逻辑或 |不管第一个条件是否为true,第二个条件都要判断(执行),效率低

📀赋值运算符

赋值运算符一览表
运算符运算范例结果
=赋值a = 77
+=加等a = 7;a += 7a = 14
-=减等a = 7;a -= 7a = 0
*=乘等a = 7;a *= 7a = 49
/=除等a = 7;a /= 7a = 1
%=模等a = 7;a %= 7a = 0

细节说明:

  • a += 7等价于a = a +7,其他类推
  • 除了=之外,其他赋值运算符均为单目运算符,即只有一个操作数
  • 运算顺序是从左往右

📀三元运算符

条件表达式 ? 表达式1 : 表达式2;

运算规则:若条件表达式为true,运算后的结果是表达式1;若条件表达式为false,运算后的结果是表达式2

细节说明:

  • 三元运算符的结果可以进行赋值或作函数返回值
  • 三元运算符可以转换成if - else 语句

📀运算符优先级

运算符优先级一览表(优先级从上往下)
运算方向运算符
.       {}        []      ;      ,
R ——> L++   --   ~   !  
L ——> R*   /   %
L ——> R+  -
L ——> R<<    >>   >>>  位移
L ——> R<    >     <=    >=   instanceof  
L ——> R==    !=  
L ——> R&
L ——> R^
L ——> R|
L ——> R&&    
L ——> R||
L ——> R?   :   
R ——> L=     *=      /=       %=
+=     -=    <<=    >>=
>>>=     &=    ^=    !=

🍂进制介绍

对于整数,常有以下四种表示方式:

  • 二进制:0、1,满2进1,以0b或者0B开头
  • 八进制:0~7,满8进1,以数字0开头表示
  • 十进制:0~9,满10进1
  • 十六进制:0~9及A(10)~F(15),满16进1,以0x或者0X开头表示。A~F不区分大小写

🍂二进制转十进制

规则:从最低位(最右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和

实例:将0b1011转成十进制的数,0b1011 = 1 * 2^(1-1) + 1 * 2^(2-1) + 0 * 2^(3-1) + 1 * 2^(4-1) = 1 + 2 + 0 + 8 = 11

🍂八进制转十进制

规则:从最低位(最右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和

实例:将0234转成十进制的数,0234 = 4 * 8^0 + 3 * 8^1 + 2 * 8^2 = 4 + 24 + 128 = 156

🍂十六进制转十进制

规则:从最低位(最右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和

实例:将0x23A转成十进制的数,0x23A = 10 * 16^0 + 3 * 16^1 + 2 * 16^2 = 10 + 48 + 512 = 570

🍂十进制转二进制

规则:将该十进制数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。(一般使用短除法操作,容易看清楚数据)

🍂十进制转八进制

规则:将该十进制数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。(一般使用短除法操作,容易看清楚数据)

🍂十进制转十六进制

规则:将该十进制数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。(一般使用短除法操作,容易看清楚数据)

🍂二进制转八进制

规则:从低位开始,将二进制数每三位一组,转换成对应的八进制数即可

实例:将0b11010101转成八进制数,0b11(3)010(2)101(5) => 0325

🍂二进制转十六进制

规则:从低位开始,将二进制数每四位一组,转换成对应的十六进制数即可

实例:将0b11010101转成八进制数,0b1101(D)0101(5) => 0xD5

🍂八进制转二进制

规则:将八进制数每1位,转换成对应的一个3位的二进制数即可

实例:将0237转换成二进制数,02(010)3(011)7(111) = 0b10011111

🍂十六进制转二进制

规则:将十六进制数每1位,转换成对应的4位的一个二进制数即可

实例:将0x23B转换成二进制数,0x2(0010)3(0011)B(1011)


🎉二进制在运算中的说明

  1. 二进制是逢2进位的进位制,0、1是基本算符
  2. 现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,非常简单方便,易于电子方式的实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用0和1两个数字及其组合来表示任何数。进位规则是逢2进1,数字1在不同位上代表不同的值,按从右至左的次序,这个值以二倍递增

 🎉原码、反码、补码(重点、难点)

在Java中,对于有符号的而言:

  1. 二进制的最高位是符号位:0表示正数,1表示负数(0正1负)
  2. 正数的原码、反码、补码都一样(三码合一)
  3. 负数的反码 = 它的原码符号位不变,其他位按位取反
  4. 0的反码、补码都是0
  5. Java没有无符号数,即Java中的数都是有符号的
  6. 在计算机运算的时候,都是以补码的方式来运算的
  7. 当我们看运算结果时,要看他的原码

 🎉位运算符

位运算符一览表
运算符运算规则
&(按位与)两位全为1,结果为1,否则为0
|(按位或)两位至少有一个为1,结果为1,否则为0
^(按位异或)相异为1,相同为0
~(按位取反)0 -> 1,1 -> 0
>>(算术右移)低位溢出,符号位不变,并用符号位补溢出的高位
<<(算术左移)符号位不变,低位补0
>>>(逻辑右移、无符号右移)低位溢出,高位补0

注意:无 <<< 符号,位运算符的操作数均是二进制中的每一位数


学习记录:

  • 📆本篇博客整理于2022.7.17~2022.7.20
  • 🎓作者:如何写出最优雅的代码
  • 📑如有错误,敬请指正🌹🌹
  • 🥂关注一波不迷路!如果觉得写的不错,看完了别忘了点赞和收藏啊,感谢支持😏😏
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如何写出最优雅的代码

感谢支持,我将继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值