问题描述
我们都知道JAVA中的char类型是占两个字节,如下:publicclassgetcharcode{publicstaticvoidmain(String[]args){Strings="A";Stringr="王";System.out.println(s.getBytes().length);System.out.println(r.getBytes().length);Charactera='a';Characterb='啊';Integerc=5;System.out.println(a.SIZE);System.out.println(b.SIZE);System.out.println(c.SIZE);}}输出的是12161632为什么一个英文字符输出长度为1,而一个汉字输出长度为2,还是说一个英文字符占一个字节,一个汉字占两个字节如果是这样的话,为什么英文和汉字所占的位数都是16???还有如果每个字符占两个字节的话,关于DataOuputStream类的writeChars(Strings)方法会将每个字符的两个字节都写到文本中,那为什么在文本中显示的是乱码只有字母能正常显示(字节都写进去了啊!!)
解决方案
解决方案二:
顶求人来解答啊、、、、、、、、、、、、
解决方案三:
System.out.println(a.SIZE);System.out.println(b.SIZE);
虽然你定义了中、英文,但是这两句让你输出a和b它们类型的位数即Character,而SIZE是Character类的静态变量,值是16.(Character.SIZE),所以都输出16.
解决方案四:
1字符=2字节;1字节=8位英文占一个字节中文占一个字符,也就是两个字节1k=2^10;b:位;B:字节1kb=1024位1kB=1024字节(引)
解决方案五:
引用3楼xiaolong806124的回复:
1字符=2字节;1字节=8位英文占一个字节中文占一个字符,也就是两个字节1k=2^10;b:位;B:字节1kb=1024位1kB=1024字节(引)
xiaolong806124讲得很明白,另补充一点,在数据库中比如Oracle,汉字是占三个字节的,在实际应用中需要这些。
解决方案六:
位:Bit一个二进制数据,比如0或1就是1bit字节:Byte1byte=8bit1英文字母=1byte=8bit1中文汉字=2byte=16bit存储空间:数据库存储空间默认也是字节,也跟字符集有关,为数据库间中文转换,建议使用nchar、nvarchar、ntext等数据库类型
解决方案七:
英文占一个字节??可是java中不是说char类型是占两个字节的么?????chars=‘A’;这个s到底占两个字节还是一个字节??????
解决方案八:
英文占一个字节??可是java中不是说char类型是占两个字节的么?????chars=‘A’;这个s到底占两个字节还是一个字节??????
解决方案九:
引用1楼hcc2426775354的回复:
顶求人来解答啊、、、、、、、、、、、、
唉
解决方案十:
顶一个求高人帮助
解决方案十一:
要搞的清楚,还需深入研究过程。。。