1. char 对应的二进制,使用的是UTF-16-BE编码,java内部默认使用UTF-16-BE编码;
Integer.toBinaryString("😀".charAt(0))
2. getByte方法使用的是外部编码,例如UTF-8、GBK等,默认使用Charset.defaultCharset().name(),"😀".getByte()[0]或者直接指定编码, "😀".getByte("charset")[0];
getByte方法,会调用各种编码的实现(sun.nio.cs.*;sun.nio.cs.ext.*)来转码,最后还是转成char
Integer.toBinaryString("😀".getByte()[0])
3. 所以char的二进制和getByte二进制不一定一样,如果getByte指定编码为UTF-16-BE,是一样的
4. "😀"占用两个char,四个字节