java程序员面试宝典1
1.在java中字符串只以Unicode一种形式存在(不选择任何特定的编码,直接使用他们在字符集中的编号,这是统一的唯一的方法)
2.在java中,是指在JVM中,在内存中,在你的代码里声明的每个char,String类型的变量中。
public class Test2 { public static void main(String[] args){ char han='永'; System.out.format("%x",(short)han); //这里输出6c38 char han1=0x6c38; System.out.println(han);
//这里输出永 } }
//这里是说只要你正确的读入了永字,那么它在内存找那个的表示形式一定是0x6c38,没有其他任何值能够表示这个字了
JVM的这种约定是的一个字符分为两个部分:JVM内部和OS文件系统,编码的转换一般发生在JVM和OS的交界处。
3.基本IO可以分为两大阵营:面向字节的输入/输出流;面向字符的输入输出流。
(1)面向字节:保证文件系统中的二进制内容和读入JVM内部的二进制内容一致,不能变换任何0和1的顺序。适合读入音视频文件或者不需要做交换的文件。
(2)面向字符的I/O:读入文件系统中的字符和读入内存中的“字符”要保持一致。
在输出时,内存中的Unicode字符使用了系统默认的编码方式进行了编码,而在输出的时候,讲文件系统中已经编码过的字符使用默认的编码方案进行还原。
一个字符和字节之间的转换需要用到编码的转换,在java中能够制定转换编码的地方有两个:InputStreamReader和OutputStreamWriter