Java面试题-笔试题01---基本数据类型相关

下列哪些定义正确()

A int i = 0xFFFFFFFF;

B char c ='\u0571';

C byte b= 01;

D int i ='a';

E long l = 445555566666L;

答案:A,B,C,D,E

知识点:

(1)java的基本数据类型

名称位数范围默认值
byte8-2^7~2^7-10
short16-2^15~2^15-10
int32-2^31~2^31-10
long64-2^63~2^63-10
float32(+-)1.4E~45~(+-)3.4028235E+380.0
double64(+-4.9E~324~(+-1.7976931348623157E+308))0.0
char160~2^16-1(/u0000~/uffff)0即空
boolean8true、falsefalse

byte,short,int,long均为带符号的整数,因此它必须有一位二进制位表示符号。现在计算机中带符号整数都用补码表示。n位带符号整数的表示范围为-2^n-1~2^(n-1)-1。因此比如byte是8位带符号的整数,表示范围为-128~127。 byte b= 01,int i = 0xFFFFFFFF, long l = 445555566666L在其范围内因此赋值正确。而无符号整数整数的表示范围为 0~2^n-1。因此 char c ='\u0571';在其表示范围内。

为什么int i = 0xFFFFFFFF输出的结果是-1?

补码的求法:

(1)正数:一个正数的补码就是它本身的二进制。

(2)负数:先将该负数取绝对值写成二进制形式,对各二进制位按位取反,最后加1。

补码求法举例:

(1)求5的补码

5的补码即为它的二进制形式:00000101

(2)求-5的补码

*先将-5取绝对值然后写出其二进制形式:00000101

*按位取反:11111010

*加1:11111011

(3)int i = 0xFFFFFFFF为什么输出-1

* 0xFFFFFFFF最高位是1,符号位为1表示是负数。

*对 0xFFFFFFFF-1:FFFFFFFE

*按位取反得到其绝对值:00000001

*因是负数,所以最终是-1。

int i ='a'为什么输出97?

基本数据类型自动转换如如下图所示

char自动转换为int类型,‘a’对应的ascii码是97。

验证:

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值