java中的运算符

本文深入讲解Java中的各类运算符,包括算数运算符、赋值运算符、比较运算符、逻辑运算符和位运算符。详细解释了运算符的使用场景、特点及注意事项,如类型转换、自增自减的区别、位运算的应用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java运算符? 
Java中进行运算时所需要运用到的一些符号。 
需要参加运算的数据的类型相同, 
如果参加的运算类型不同,会有类型转换过程发生。 
转换成同一类型再进行计算。 


如何进行强制转换? 
例如byte: 

int i = 1; 
byte b = i; 

这样肯定是不行的,因为i是int类型的数,把i转换成byte类型 
必须要经过强制转换,因此要写成下面这样。 

int i = 1; 
byte b = (byte)i; 

字符串数据和任何数据做+运算,都没有加法的含义, 
这个+是一个连接符,任何数据和字符创相连接都会变成一个新的字符串 

例如:System.out.prinitln(“5+5=”+5+5); 
输出是5+5=55 

** 
byte b1 = 3; 
byte b2 = 4; 

byte b3 = b1 + b2; 
byte b4 = 3 + 4; 

byte b3 = b1 + b2; 
编译失败, 
因为计算机不知道b1是多少,b1是一个变量 
byte b4 = 3 + 4; 
编译通过。计算机在编译时判断3+4是否在byte范围内,如果是 
即可编译通过。 


算数运算符----------------------------- 

+ 加   - 减   * 乘   / 除 
%   取余(就是一个数除以另一个数的余数) 
对于取余运算来说 
例如2%3 
当左边小于右边,结果是左边, 
左边等于左边,结果是0 
如果出现负数,结果指依赖于左边的符号。 
常见用法: 
对2进行取模运算,结果不是0,就是1,可以完成一个切换算法。 

++ 自增(前) ++a 
++  自增(后) a++ 
-- 自减(前) --a 
--   自减(后) a-- 

前++ 和 后++的区别? 
a++ 与 ++a 执行之后a的值是一样的,不同的是, 
++a是先让a+1,然后取出a的值进行计算; 
a++是先取出a的值进行计算,然后a+1。 
例如 
int a = 3,b=4; 
int c = b + a++; 
System.out.println(c); 
c的值是7 

int a = 3,b=4; 
int c = b +  ++a; 
System.out.println(c); 
c的值是8 



赋值运算符----------------------------- 
= , += , -= , *= , /= ,%= 
例示: 
int a,b,c; 
a = b = c = 3; 
int a = 3; a += 5等同于运算a = a+5; 


** 
short s = 3; 
s = s+2;和s += 2; 
有什么区别? 

s = s+2 不会通过编译,因为2是int型的, 
是四个字节的,而s是两个字节的,所以会出现错误。 
而s += 2不会出现编译错误,因为 += 是赋值运算符 
这是一个赋值语句,所以会有一个自动转换动作。 


比较运算符-------------------------------- 
== 相等于 
!= 不等于 
< 小于 
> 大于 
<= 小于等于 
>= 大于等于 
Instanceof 检查是否是类的对象 

逻辑运算符-------------------------------- 
& 与 



| 或 



^ 异或 



! 非 


&& 短路与 
|| 短路或 


&& 和 & 的区别? 
&是无论左边是true还是false,两边都运算 
&&是当左边卫false时,右边就不用计算了。 
&可以表示位运算符 




||和|的区别 
|是两边都计算 
||当左边是true右边就不用计算了 
|可以表示位运算符 

位运算符------------------------------------ 
<< 左移 
>> 右移 
>>> 无符号右移 
& 与运算 
| 或运算 
^ 异或运算 
~ 反码 

位运算符的特点 
6的二进制数是110, 3的二进制数是011 

反码其实就是取反,对二进制取反,将0变1,1变0. 

如何求负数的二进制? 
负数的二进制其实就是对应的整数,进行取反+1; 
-6 = 1111-1111 1111-1111 1111-1111 1111-1010; 
负数的二进制,最高位都是1. 

如何计算&运算? 



异或: 
一个数异或另一个数两次,结果还是这个数。 

怎样不通过第三方变量交换两个变量的值? 
  int a = 3; 
  int b = 5; 
  a = a^b; 
  b = a^b; 
  a = a^b; 
  这样就交换了,因为第一步a=a^b,第二步b=a^b相当于b=a^b^b=原a; 
  第三步a = a^b就相当于a = a^b^a^b^b=原b 


在简单的加密软件中可以用的到 

X就相当于那个密钥,只要知道了x的值,和的值就全都知道了 


什么是<<(左移)运算符? 
左移运算符就是将一个数字转换成二进制数,让整体向左移。 
例如6的二进制数是第一行,第二行是左移之后的二进制数。 

6<<1 = 12;相当于 6*2 = 12; 
但是左移的运算效率很高。 
左移的特点:乘以2的次幂(移几位,就是几次幂) 

什么是>>(右移)运算符? 
右移运算符就是将一个数字转换成二进制数,让整体向右移。 
例如6的二进制数是第一行,第二行是左移之后的二进制数。 

右移:就是一个除以2的次幂动作(移几位,就是2的几次幂) 

什么是>>>(无符号右移)运算符? 
一般的>>右移是最高位为0,右移后,最高位的空位用0补。 
如果最高位为1,右移后,最高位的空位用1补。 
而>>>无符号右移是无论最高位是0还是1,右移后,出现空位,都用0补。 

>>>(无符号右移)的用法? 
例如 第一行是60的二进制表现形式 

第二行是15的二进制表现形式 

第三行是 60 & 15 的二进制表现形式(12)。 
12的二进制是1100,而1100是六十的二进制表现形式的最后四位, 
如果想要获取60二进制数的最后的4--8位,可以用无符号右移运算符 

int num = 60; 
num = num >>> 4; 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值