大家可以看一下链接,因为这里不能发图片。http://blog.sina.com.cn/s/blog_735ae2580100vhtt.html
起初我不明白zhangsan变成张三后为什么程序会有变化;对于raf.readInt()方法,我不明白为什么zhangsan后面会是zhangsan对应的年龄。然后我查了查jdk文档,看到readInt()方法的介绍:“从此文件读取一个有符号的 32 位整数。此方法从该文件的当前文件指针开始读取 4 个字节。如果按顺序读取的字节为 b1、b2、b3 和 b4,其中 0 <= b1, b2, b3, b4 <= 255,则结果将等于:
(b1 << 24) | (b2 << 16) + (b3 << 8) + b4
在读取了这四个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。 ”
我突然明白了,这个RandomAccessFile类是个指针类,在读了zhangsan的名字之后,指针停留在zhangsan的年龄前面了,就会读zhangsan对应的年龄了。
而对于zhangsan变张三,我一开始宏观弄明白了,就是一个中文字符比一个英文字符,多占1字节,所以要*2,但是我仔细一研究,zhangsan是8个字符,张三却是两个字符,汉字张三*2,不就是4个字节吗?不应该放不下啊,请高人答解。 |
|