弄清java中的字节与字符

问题
在java中,一个字符等于多少字节?
或者更详细的问:在java中,一个英文字符等于多少字节?一个中文字符等于多少字节?
答案
Java采用来表示字符,java中的一个char是2个字节,一个中文或英文字符的编码都占2个字节,但如果采用其他编码方式,一个字符占用的字节数则各不相同 。
在 GB 2312 编码或 GBK 编码中,一个英文字母字符存储需要1个字节,一个汉子字符存储需要2个字节 。
在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节 。
在UTF-16编码中,一个英文字母字符存储需要2个字节,一个汉字字符储存需要3到4个字节(扩展区的一些汉字存储需要4个字节) 。
在UTF-32编码中,世界上任何字符的存储都需要4个字节 。
举个例子:
java代码如下:
String str = "测试test";int byte_len = str.getBytes().length;int len = str.length();System.out.println("字节长度为:" + byte_len);System.out.println("字符长度为:" + len);
如果编码方式为GBK,对于字符串“测试test”,字符长度为6,字节长度为8 。
如果编码方式为UTF_8,对于字符串“测试test”,字符长度为6,字节长度为10 。
注意:字符串的()方法返回的是字符长度,一个汉子表示一个字符,一个字母也表示一个字符 。
和UTF_8有什么关系
UTF-8就是在互联网上使用最广的一种的实现方式 。的其他实现方式还包括UTF-16和UTF-32 。
UTF-8的最大特点是,它是一种可变的编码方式 。
详情请自行百度~
那么问题来了
说了这么多还是不明白,到底java中一个char表示几个字节?请看下面解释
public class Test {public static void main(String[] args) {String str= "测";char x ='测';byte[] byteStr=null;byte[] byteChar=null;try {byteStr = str.getBytes("utf-8");byteChar = charToByte(x);} catch (Exception e) {e.printStackTrace();}System.out.println("byteStr :"+byteStr.length);System.out.println("byteChar:"+byteChar.length);}public static byte[] charToByte(char c) {byte[] b = new byte[2];b[0] = (byte) ((c & 0xFF00) >> 8);b[1] = (byte) (c & 0xFF);return b;}}
运行结果:
:3
:2
java是用来表示字符,"测"这个中文字符的就是2个字节 。
.()方法是获取指定编码的byte数组表示,
【弄清java中的字节与字符】如果不指定则取系统默认的 。