java中“学java”字符串在内存中占的字节

publicclassTest{publicstaticvoidmain(String[]args){Stringstr="学java";intn=str.getByte... public class Test{

public static void main(String[] args){
String str = "学java";
int n = str.getBytes().length;
System.out.println(n);
}
}
测试结果输出:7
求解
Java内部是使用unicode编码的,一个字符占用两个字节,这样算下来,应该输出10啊
展开
 我来答
小童鞋_成er
2014-09-29 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22879
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部

您好,提问者:

    Java默认是用gbk编码,而且汉字是占两个字节,都是负数。

    Java中的UTF-8汉字是三个字节,都是负数,其它是一个字节。

    所以输出2+4=6,完全正确。

    由于你修改了这个文件的编码,所以输出3+4=7的

    str.getBytes("unicode").length; //12
    str.getBytes("gbk").length; //6
    str.getBytes("utf-8").length; //7
QQMSD8
2014-09-29 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
Java内部是使用unicode编码的

unicode是变长的,英文占一个字节,汉字占2-4个字节
谢谢采纳
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友280dca9
2014-09-29 · TA获得超过111个赞
知道答主
回答量:42
采纳率:0%
帮助的人:31.3万
展开全部
java的unicode编码不是固定的,对于英文是固定的占一个字节,但是对于汉字不是固定的,可以去这里看一下http://blog.csdn.net/lubiaopan/article/details/4714909
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yiwangxianshi
2014-09-29 · TA获得超过735个赞
知道小有建树答主
回答量:288
采纳率:85%
帮助的人:115万
展开全部
你把“学”和“java”分开输出看一下就明白了,汉字“学”占了3个字符,每个英文占1个字符。

另外,汉字通常占2-3个字符,和你运行程序的环境有关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2d4335c
2017-08-21
知道答主
回答量:1
采纳率:0%
帮助的人:956
展开全部
输出的结果为 7 应该是 编码是 utf-8 unicode的编码输出的是12并不是10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式