今天突然发现不管是GBK还是U8码表,字符串中的字符获取字节数组时都是1个字节表示的,但是如果获取char数组又可以是两个字节,有点糊涂,这里面是怎么encode和decode的,同样一个字符串,为什么获取字节数组就是1个字节表示一个字符,获取字符数组就是两个字节,是在查表反编译之后补了8个0转成了字符么?
- System.out.println(Byte.SIZE);
- System.out.println(Short.SIZE);
- System.out.println(Integer.SIZE);
- System.out.println(Long.SIZE);
- System.out.println(Float.SIZE);
- System.out.println(Double.SIZE);
- System.out.println(Character.SIZE);
- System.out.println("FF".getBytes("GBK").length);
- System.out.println("李四".getBytes("GBK").length);
- char[] arr = new char[2];
- "ff".getChars(0,2,arr,0);
- for(int i = 0 ; i < 2 ; i ++)
- {
- System.out.println(arr[i]);
- }
-
- byte[] buf = "ff".getBytes();
- for(int i = 0 ; i < buf.length ; i ++)
- {
- System.out.println(buf[i]);
- }
复制代码 |