原码、反码、补码、移码区别与应用

本文探讨了Java中的基本数据类型,包括默认值、数据溢出、类型转换和MySQL int范围。同时深入讲解浮点类型的原码、反码、补码和移码的概念及其应用,以及浮点数在计算机内的表示方式。最后讨论了随机数生成和类型提升的细节。
摘要由CSDN通过智能技术生成

一、Java中的基本数据类型

Java中共有8种数据类型,分为三大类。
字符型:char
布尔型:boolean
数值型:1. 整型:byte、short、int、long;2. 浮点型:float、double
String不是基本数据类型,是引用类型。

在这里插入图片描述


关注点1:基本类型默认值0

从表中可以看到基本数据类型的起始默认值都是0,但是每个之间都有区别。例如,char默认值是单引号'\u0000'表示NUL(空的不可见字符),其码值是0
boolean类型的默认值是false,在JVM中仍然使用ICONST_0字节码指令赋值,即常数0

boolean b = false;
1: iconst_0
2: istore_1

关注点2:开发的时候注意数据溢出问题

数据溢出的时候并不会报错,也没有任何提示。

int i = 2147483647;
int j = 1;
System.out.println(i + j); 
运行结果:-2147483648

因此需要开发人员在同类型数据运算时,注意数据溢出的问题,并避免编写容易导致溢出的代码。

int mid = (i + j) / 2;
替换为
int mid = i + (j - i) / 2;

关注点3:不同类型不能自动拆装箱

int i = 0;
Long j = i;

int类型的包装类是Integer,无法转化成Long类型。


关注点4:MySQL int的取值范围(先记在这,哈哈)

记得有这样一道面试题:如果采用自增int作为主键,主键不够用怎么办。很多小伙伴可能会答换成更大的类型long。无符号int类型作为主键,有着很大的取值范围,如果表的记录无需到达int取值上限,就需要考虑分表了。

二、浮点类型

关注点1:原码、反码、补码、移码

对于正数,原码、反码、补码相同,均为正数本身。
对于负数:原码的符号位是1。反码符号位为1,其他位为原码取反。补码为反码末尾加1。

原码的出现是为了引入负数。

原码:1111 1111 ~ 0111 1111
真值范围:-127 ~127255个)
其中1000 00000000 0000都表示0

原码存在带符号位运算的问题。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值