netty框架面试题,java算数运算符

int b=2;

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表示负数。这种常用的表示有符号二进制数的方法称为二进制补码:

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

硬件造成困扰。因此现在所有的计算机都采用的是二进制补码方法来表示有符号数。

例如:

0000 0000 0000 0000 0000 0000 0000 0000 =0(10)

0000 0000 0000 0000 0000 0000 0000 0001 =1(10)

0000 0000 0000 0000 0000 0000 0000 0010 =2(10)

0111 1111 1111 1111 1111 1111 1111 1101 =2,147,483,645(10)

0111 1111 1111 1111 1111 1111 1111 1110 =2,147,483,646(10)

0111 1111 1111 1111 1111 1111 1111 1111 =2,147,483,647(10)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

那么如何才能正确的掌握Redis呢?

为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题

  • 并发编程面试题汇总

  • JVM面试题汇总

  • Netty常被问到的那些面试题汇总

  • Tomcat面试题整理汇总

  • Mysql面试题汇总

  • Spring源码深度解析

  • Mybatis常见面试题汇总

  • Nginx那些面试题汇总

  • Zookeeper面试题汇总

  • RabbitMQ常见面试题汇总

JVM常频面试:

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(一)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Mysql面试题汇总(二)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计

Redis常见面试题汇总(300+题)

Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
图片转存中…(img-iynv3FTx-1713341985040)]

Redis常见面试题汇总(300+题)

[外链图片转存中…(img-8LD8WAl5-1713341985040)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值