求解关于JAVA中字符编码的问题

编译器H 2014-09-25 10:51:41
我们都知道JAVA中的char类型是占两个字节,如下:
public class getcharcode {

public static void main(String[] args){
String s = "A";
String r = "王";
System.out.println(s.getBytes().length);
System.out.println(r.getBytes().length);

Character a ='a';
Character b ='啊';
Integer c = 5;
System.out.println(a.SIZE);
System.out.println(b.SIZE);
System.out.println(c.SIZE);
}
}
输出的是1 2 16 16 32
为什么一个英文字符输出长度为1,而一个汉字输出长度为2,还是说一个英文字符占一个字节,一个汉字占两个字节
如果是这样的话,为什么英文和汉字所占的位数都是16???


还有如果每个字符占两个字节的话,关于DataOuputStream类的writeChars(String s)方法会将每个字符的两个字节都写到文本中,那为什么在文本中显示的是乱码只有字母能正常显示(字节都写进去了啊!!)
...全文
204 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
2.wa 2014-09-26
  • 打赏
  • 举报
回复
看看我整理的资料或许有帮助 要搞的清楚,还需深入研究过程。。。
as1dasd11 2014-09-26
  • 打赏
  • 举报
回复
顶一个 求高人帮助
编译器H 2014-09-26
  • 打赏
  • 举报
回复
引用 1 楼 hcc2426775354 的回复:
顶 求人来解答啊、、、、、、、、、、、、
编译器H 2014-09-26
  • 打赏
  • 举报
回复
英文占一个字节??可是java中不是说char类型是占两个字节的么?????char s = ‘A’;这个s到底占两个字节还是一个字节??????
编译器H 2014-09-26
  • 打赏
  • 举报
回复
英文占一个字节??可是java中不是说char类型是占两个字节的么?????char s = ‘A’;这个s到底占两个字节还是一个字节??????
xiaolong806124 2014-09-26
  • 打赏
  • 举报
回复
1字符=2字节;1字节=8位 英文占一个字节 中文占一个字符,也就是两个字节 1k=2^10;b:位;B:字节 1kb=1024 位 1kB=1024 字节 (引)
xiaolong806124 2014-09-26
  • 打赏
  • 举报
回复
System.out.println(a.SIZE);
System.out.println(b.SIZE);
虽然你定义了中、英文,但是这两句让你输出a和b它们类型的位数即Character,而SIZE是Character类的静态变量,值是16.(Character.SIZE),所以都输出16.
编译器H 2014-09-25
  • 打赏
  • 举报
回复
顶 求人来解答啊、、、、、、、、、、、、

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧