java中String类型的数据分配多少字节

stringline=null;给line分配了多收内存?... string line=null; 给line分配了多收内存? 展开
 我来答
百度网友96ffcf7
2015-04-08 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118726
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
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确是对象类型。
百度网友c2334ea
2015-04-08 · TA获得超过463个赞
知道小有建树答主
回答量:489
采纳率:100%
帮助的人:90.4万
展开全部
255 字节 byte
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
米son
2015-04-08 · TA获得超过192个赞
知道答主
回答量:92
采纳率:0%
帮助的人:34.5万
展开全部
8堆中+4栈中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
le284
2015-04-08 · 还没有填写任何签名呢
le284
采纳数:315 获赞数:996

向TA提问 私信TA
展开全部
没有new的话,应该还没有分配堆内存,只是申明。
追问
是不是如果new的话 必须  new String()。()中必须写上字符串,而不能是空着?
追答
如果是定义String的话,可以直接是String s = “ss”
在内部实现会执行new; 只有s = null;的时候,不会new
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式