关于java源程序编码格式的问题

源程序:publicclassMAIN{publicstaticvoidmain(String[]args){charc='机';Strings="机"System.ou... 源程序:

public class MAIN
{
public static void main(String[] args)
{
char c = '机';
String s = "机"

System.out.println(c);
System.out.println(s);
}
}
这段代码使用ANSII+GBK编码(jdk安装在windows xp简体中文版上)

请问,字符变量c和字符串对象s中储存的分别是什么?
是‘机’的GBK编码 BBFAh ?
还是‘机’的UTF-16(Big Endian)编码 673Ah ?
还是‘机’的UTF-16(Little Endian)编码 3A67h?

希望可以给出充分解释,或者相应的java标准。
展开
 我来答
巨人战舰
2014-02-03 · TA获得超过186个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:153万
展开全部
Java内部都是用Unicode编码吧,跟平台无关
char c = '机';
c在Java内部用Unicode编码,两个字节
String s = "机"
s使用char类型构成的字符串,每个char是两个字节
至于你说的ANSII+GBK,应该是代码的编码方式,跟Java内部存储无关
追问
嗯嗯,还有
String s = “中国ABC”;
这个字符串是使用unicode编码,含有5个字符,占用10个字节
是这样吗?

另外,java的字符和字符串储存的时候,是使用UTF-16(BE)还是UTF-16(LE)?
追答

是的,String基于char类型,都是2个字节/个


你可以使用以下代码获得十六进制编码方式

String str="中国ABC";
char[] cha=str.toCharArray();
for(c:cha)
{
    System.out.println(Integer.toHexString(c));
}

打印出十六进制编码,你可以一一对照。按我的测试是UTF-16BE

至于到底采用何种方式存储,需要根据实际情况而定,给你个链接,找了半天,里面讲的还是比较详细的


http://www.2cto.com/kf/201208/147530.html

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式