在JAVA中当定义char c='a',String s="abc"时,分别在内存中占多少字节?

问题是这样的:书上都说,在JAVA中一个字符占两个字节,但:charc='a';System.out.println(c.getBytes().lenth()),得到的是... 问题是这样的:书上都说,在JAVA中一个字符占两个字节,但:
char c='a';
System.out.println(c.getBytes().lenth()),得到的是1。
而定义:
char c='中';
System.out.println(c.getBytes().lenth()),得到的却是2。
于是问题来了,在JAVA中,我们定义一个字符或是字符串,它们到底占用几个字节?
谢谢各位!
谢谢各位的热心,但大家好像没太看清我的问题,我是想问:char c='a'在内存中占几个字节,String s="abc"在内存中占几个字节。
谢谢大家!
展开
 我来答
御用灌水师
推荐于2016-04-08 · TA获得超过1573个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:726万
展开全部
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确是对象类型。对象是一种很复杂的数据类型,你要看一个对象具体占多少字节,可以把这个对象序列化后存入一个文本文件来看它具体占用了多少字节,当然这也不是精确的,因为序列化需要写入少量系统信息,但大致是对的。
daay1986
2009-02-25 · TA获得超过6018个赞
知道大有可为答主
回答量:2208
采纳率:0%
帮助的人:1473万
展开全部
字母是直接的编码,和数字这些一样。而汉字是后来用unicode加的就是2了。string是对象他的内存要比字符多的多。
private final char value[];
private final int offset;
private final int count;
private int hash;
private static final long serialVersionUID = -6849794470754667710L;
private static final ObjectStreamField[] serialPersistentFields =
new ObjectStreamField[0];
这是string里的变量,最后一个还是个对象。他的内存比char多不知道多少倍了。
char c='a'是一个字节。String s="abc"3字节。再说下,真正在内存中的是个对象String,s在内存占的字节就是这个对象实际在内存的字节就不是3.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不懂禅师
2009-02-25 · TA获得超过157个赞
知道答主
回答量:165
采纳率:0%
帮助的人:94.2万
展开全部
lenth()函数是返回用16位unicode编码的个数,a只需一个16位的unicode编码,而中文字符都需要两个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
实_事_求_是
2009-02-25
知道答主
回答量:21
采纳率:0%
帮助的人:15.5万
展开全部
汉字是站2个字节,字母站1个字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vincentkf
2009-02-25 · 超过23用户采纳过TA的回答
知道答主
回答量:130
采纳率:0%
帮助的人:67.5万
展开全部
中国字等于2个英语字母
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式