这还感觉像看论文啊?你要是看 Thinking in Java 的话那更看不懂了(反正我是看不懂)。为什么看不懂,我认为有这些原因:1,看技术书籍不能像是看小说一样,一目十行的,得做到用心去体会,我不知道你看这本书的速度如何? 2,可能只是看,而没有练,如果练的时候不会写,那说明还没有嚼烂,嚼透 3,阅读代码的方法可能有问题,应先从 main 方法开始一层一层地往下看,在书上作上标记暂时就想到这些原因了,以后想到了再来回复。
没看过,不过得从基础看起,怎么一下子就看到I/O了,I/O应该是书后部分的知识。
Java SE 的 IO 库是个庞大的继承链,要弄明白 IO 得先弄明白字节流、字符流的区别。IO 库中大量地运用了装饰器模式,有必要的话可以通过其他途径了解一下这个设计模式,了解后对于 IO 可能会有新的认识。
Thinking in Java 貌似不难看懂啊,我看了两次,每次都有很多收获,特别是第二次看
JAVA核心技术前不久刚看过,没什么感觉,可能是没看懂的原因
thinking in java正在看,看完一章后面的习题很不错的.做完有很大收获
主要是练吧,一开始拼命的看thinking in Java ,看了一半了,速度放下来,多敲敲实例,自己慢慢思索,琢磨下,还是有很多收获的
java讲究的是应用 你又不是开发JVM 要懂那么多原理做什么?
估计楼主是对装饰模式的不理解,因为java I/O的代码一般都会嵌套(不知道这么表达准确不,但应该都知道我想表达的意思)几层new xXXXXStream()如此这般的,看起来有点吃力.给你一点建议,看什么书都好,感觉难以继续下去的时候,不妨先放一下,去看看另外一些书/网上的帖子博客的是怎么陈述此方面的知识,有时候不同的角度看,或许另你豁然开朗.上面说得很虚了,(本人)建议可以看看thinking in java 3th edition第12章I/O惯于Stream和Reader部分的论述. 那里总结了哪些类是作为源/目的流用的,哪些是用作修饰的(提供某方面的功能,都继承自FilterInputStream/FilterOutputStream).还有就是要记得InputStreamReader和OutpurtStreamReader这两个很有用的类(Stream和Reader的转换).举个例子: BufferedReader br = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream("c:\text.txt"))));这里要表达的意思是: 1. 创建一个带缓冲功能的基于字符的流(BufferedReader),BufferedReader是起到一个修饰的作用,提供缓冲功能. 2. 这个缓冲的字符流实际操作的是一个由字节流转换过来的字符流,所以代码接下来就是new了一个InputStreamReader,用以将Stream转换成Reader. 3. 这个被转换的字节流又是个什么东西呢? 你可以看到它是一个带缓冲功能的输入流,就是BufferedInputStream,这个是一个修饰流,用以提供缓冲功能的(继承自FilterInputStream). 4. 最后,你看到了new FileInputStream(),其实这个才是你真实要操作的流,因为FileInputStream是一个关于源的流(不是起修饰作用,没有继承自FilterInputStream),也就是说它不是用来提供某种功能的,而是表明流是从哪里来的(或者是到哪里去的,如果是FileOutputStream的话).至此,我们看到了,带修饰作用的流起到提供某种功能的作用,在嵌套中的最里面一层一定不是这种带修饰作用的流,而是源/目的流(如FileInputStream或ByteArrayOutputStream等). 打一个不太贴切的比方: public static void main 这里public,static和void都是用来修饰main这个方法的,这三个修饰符的地位相当于BufferedReader和BufferedInputStream,而main就相当于FileInputStream. 或者这样看,你会更容易比较: new public(new static(new void(new main())))
2,可能只是看,而没有练,如果练的时候不会写,那说明还没有嚼烂,嚼透
3,阅读代码的方法可能有问题,应先从 main 方法开始一层一层地往下看,在书上作上标记暂时就想到这些原因了,以后想到了再来回复。
Thinking in Java
貌似不难看懂啊,我看了两次,每次都有很多收获,特别是第二次看
JAVA核心技术前不久刚看过,没什么感觉,可能是没看懂的原因
你又不是开发JVM
要懂那么多原理做什么?
那里总结了哪些类是作为源/目的流用的,哪些是用作修饰的(提供某方面的功能,都继承自FilterInputStream/FilterOutputStream).还有就是要记得InputStreamReader和OutpurtStreamReader这两个很有用的类(Stream和Reader的转换).举个例子:
BufferedReader br = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream("c:\text.txt"))));这里要表达的意思是:
1. 创建一个带缓冲功能的基于字符的流(BufferedReader),BufferedReader是起到一个修饰的作用,提供缓冲功能.
2. 这个缓冲的字符流实际操作的是一个由字节流转换过来的字符流,所以代码接下来就是new了一个InputStreamReader,用以将Stream转换成Reader.
3. 这个被转换的字节流又是个什么东西呢? 你可以看到它是一个带缓冲功能的输入流,就是BufferedInputStream,这个是一个修饰流,用以提供缓冲功能的(继承自FilterInputStream).
4. 最后,你看到了new FileInputStream(),其实这个才是你真实要操作的流,因为FileInputStream是一个关于源的流(不是起修饰作用,没有继承自FilterInputStream),也就是说它不是用来提供某种功能的,而是表明流是从哪里来的(或者是到哪里去的,如果是FileOutputStream的话).至此,我们看到了,带修饰作用的流起到提供某种功能的作用,在嵌套中的最里面一层一定不是这种带修饰作用的流,而是源/目的流(如FileInputStream或ByteArrayOutputStream等).
打一个不太贴切的比方:
public static void main
这里public,static和void都是用来修饰main这个方法的,这三个修饰符的地位相当于BufferedReader和BufferedInputStream,而main就相当于FileInputStream.
或者这样看,你会更容易比较:
new public(new static(new void(new main())))
我认为,关键还是要多实战才行。
没有编程的过程,是无法体会各个类和对象的具体用法和主意的要点的。
对于IO操作,配合着多线程和聊天室程序来实践比较好。
因为,同是聊天室程序,可以使用不同的数据类型、不同的IO类进行处理。
或者,整个多线程拷贝大文件什么的。
但网上下载的 thinking in java 是pdf格式的
怎眼才能实现转化?????