发布网友 发布时间:2022-04-20 15:20
共3个回答
热心网友 时间:2023-07-11 06:53
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确是对象类型。对象是一种很复杂的数据类型,你要看一个对象具体占多少字节,可以把这个对象序列化后存入一个文本文件来看它具体占用了多少字节,当然这也不是精确的,因为序列化需要写入少量系统信息,但大致是对的。
热心网友 时间:2023-07-11 06:54
这个问题比较难回答 如果你问string这个引用占多少字节那么在32位系统中应该是4字节
如果你问的是string这个对象占多少字节 那么你得去string这个类里面有多少个成员变量
byte 1
boolean 1
char 2
short2
int 4
float 4
long 8
double 8
如果有其他的对象 则一个对象按指针来说是4字节
热心网友 时间:2023-07-11 06:54
你写的越长,他就越大,
初始化的时候我也不知道,也不用关心