Java中基本类型字节数

一. java中基本类型占用字节数

1. 整型

类型存储需求bit数取值范围备注
int4字节4*8-2147483648~2147483647即 (-2)的31次方 ~ (2的31次方) - 1。
为什么是31而不是32?因为第一位是符号位,用来表示正负的
short2字节2*8-32768~32767 
long8字节8*8  
byte1字节1*8-128~127 

2. 浮点型

类型存储需求bit数取值范围备注
float4字节4*8 float类型的数值有一个后缀F(例如:3.14F)
double8字节8*8 没有后缀F的浮点数值(如3.14)默认为double类型

3. char类型

类型存储需求bit数取值范围备注
char2字节2*8 Java中,只要是字符,不管是数字还是英文还是汉字,都占两个字节。

至于为什么 Java 中 char 无论中英文数字都占用2字节,是因为 Java 中使用 Unicode 字符,所有字符均以2个字节存储。 而如果需要识别字符是否为中文,可以使用正则匹配式:

String _regex = "[\\u4e00-\\u9fa5]";

 

4. boolean类型

类型存储需求bit数取值范围备注
boolean1字节1*8false、true 

二. 为什么java中int占4个字节。

  • int是最基本的类型,一般和CPU的字宽一致。
  • 操作系统16位的时候,int 2字节,操作系统32位的时候,int 4字节,由于32位系统之前占主流地位,实际现在就算是64位系统,出于兼容性考虑,int也是4字节的
  • 一个字节占8位,所以:32/8 = 4个字节

三. Uint16、Uint32、Uint64、Char(16)的意思

  • Uint16表示规定一个int占16位,16/8=2个字节,所以你需要把int转换成2个字节进行传输,也就是byte[2]。
    • 注意,如果直接用强转的方式,例如(byte)1,这里1是被转成一个字节,一个字节只能表示-128~127。
    • 如果想要把一个int值转成4个字节byte[4],请看另一篇文章: java中byte[ ]和各种数据类型的相互转换
  • Uint32表示规定一个int占32位,32/8=4个字节,所以你需要把int转换成4个字节进行传输,也就是byte[4]。
  • Uint64表示规定一个int占64位,64/8=8个字节,所以你需要把int转换成8个字节进行传输,也就是byte[8]。
  • Char(16)表示传输16个字节。至于一个char要占一个字节还是两个字节,要看具体的协议定制。只要接收和发送方按照相同的规则来解析转化即可。
    • 例如要传输passWord = “abcd”这样一串密码
    • 发送方如果用java的byte b[] = passWord.getBytes(),则b的长度是4位,内容是:61 62 63 64(abcd的ASCII值的16进制) (用getBytes方法的话,一个char一个字节)
    • 接收方只要同样按4个字节来解析即可,例如:
private String decode(byte[] b) {
  char[] psw = new char[4];
  for (int i = 0; i < psw.length; i++) {
    psw[i] = (char) b[i];
  }
  return String.valueOf(psw);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值