java算数运算符

System.out.println( a++); 1

System.out.println( ++a); 3

那么System.out.println(++b+b++);结果会是几呢? 答案是6这里涉及到了运算优先级的问题。

//–同理

二、赋值运算符=

//扩展赋值运算符

int c=1;

c=c+1;等同c=c+1;

涉及到类型转换

下面出道面试题:

byte b=10;

b=b+1;

System.out.println(b);

会报错?

答案:是肯定会的,主要是因为其中1默认的是int类型数据

但是b是byte类型,在进行运算d+1的时候,会整体转换为int型,而结果确是需要把int类型转换为byte类型,需要进行强制转换,高类型向低类型时候会损失精度,而低类型向高类型转换会自动进行转换。

可以换一种写法

例如:

b+=1;

System.out.println(b); 这个时候就不会进行报错了。

所以建议选择第二种运算方式。

三、关系运算符

、<、>=、<=、==、!=

用于表示两个值的关系

System.out.println(1!=2); 返回值只有boolean类型即true、false两种情况,在面向对象的时候会有其他情况出现。

四、逻辑运算符

&&、||、!

逻辑运算符的两边一般是表达式,而不是具体的值

例如:

&&:且

System.out.println(3>5 && 3<4); FALSE 左边只要是错误直接跳出

System.out.println(3>5 & 3<4); FALSE 两边都会参与运算

|| :或

System.out.println(3>5 || 3<4); TRUE 左边不正确才,会进行右边运算

System.out.println(3>5 | 3<4); TRUE 两边都会参与运算

!:取反

System.out.println(!(3>5 || 3<4));FALSE

五、位运算符:只能操作数值,操作的时候会转化成二进制进行运算

System.out.println(4 & 5); 值为4 例如 4是 100 5是101

都为1才为1 所以运算结果是

100 =1_22+0*21+0_2^0=4

System.out.println(4 | 5); 值为 5

100 101 有一个1就为1 ,所以二进制数表示为101所以值是5

System.out.println(4 ^ 5); 值为1

100 101 位数为10或01才计数 所以二进制数表示为001,所以值为1

System.out.println(~4) 值为-5

4的二进制位是:

0000 0000 0000 0000 0000 0000 0000 0100 =2^(3-1)=4(10)

按位取反:

1111 1111 1111 1111 1111 1111 1111 1011 =

-231+230…0*22+21+1=-5

我们很容易推导出来2^31=后面所有值+1

例如 1111 2(4-1)=2(3-1)+2(2-1)+2(1-1)+1=4+2+1+1=8

所以说4按位取反后相比取 后的值是差了 2^(3-1)+1=5 所以最后值是-5

最后形成一个这样的公式即使x+X+1=0其中X是x按位取反后的值例如:

1011=-8+2+1=-5

0100=4

4+(-5)+1=0

计算机程序对正数和负数都要进行计算,所以需要一种方法来区分正数和负数。显而易见的解决方案

是增加一个独立的符号位,这种表示方法称为符号和幅值表示法。

但是该种方法有很多去电,符号位放在那里?是放在左边还是放在右边,其次是运算的时候不能提前知道运算结果是正的还是负的,而且对于该种方法的计算,在计算的时候还需要额外的一步来设置符号,最后一个单独的符号位意味着在该种表示方法中还可能存在正0和负0,所以最后这种方法被摒弃了。

正菜:

在研究更具吸引力的替代方案时产生了这样一个问题,当我们试图用一个较小的数减去一个较大的数的时候,无无符号数表示方法的结果将会是什么?答案是较小的数字将会从前面的0中借位,所有的结果中前面的位都变成了一串1。

在没有其他更明显的更好选择的情况下,最终的解决方案是选择一种易于硬件实现的表达方式:

前导位为0表示正数,前导位为1表示负数。这种常用的表示有符号二进制数的方法称为二进制补码:

这种二进制补码虽然说会给粗心的程序猿带来烦恼,但相比符号和幅值方法,该方法不会对程序猿和

最后

由于篇幅限制,小编在此截出几张知识讲解的图解

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

g-aVG71eT7-1714385539192)]

[外链图片转存中…(img-8XX917bD-1714385539192)]

[外链图片转存中…(img-TECn7qjE-1714385539192)]

[外链图片转存中…(img-yB9kTWhq-1714385539193)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值