Unicode编码

Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所以一个Unicode码占两字节。但是英文字母比较特殊,源自于8位(1字节)的ASCII吗,于是在Unicode码仅使用了低8位(1字节)就可以表示,高8位的话不使用也无所谓。所以

char c='a'; 
System.out.println(c.getBytes().lenth()),得到的是1(字节)

但汉字就完整地使用了16位(2字节)的Unicode,所以
char c='中'; 
System.out.println(c.getBytes().lenth()),得到的是2(字节)

综上,c='a'在内存中确实只占1字节,但这不意味着String s="abc"在内存中只占3字节。应该这么说,String s="abc"至少在内存中占3字节。这是因为char是基本数据类型,而String确是对象类型。对象是一种很复杂的数据类型,你要看一个对象具体占多少字节,可以把这个对象序列化后存入一个文本文件来看它具体占用了多少字节,当然这也不是精确的,因为序列化需要写入少量系统信息,但大致是对的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值