日期:2014-05-20  浏览次数:20680 次

java基础学者
请问;
1,虚拟机在装载类的时候是不是在classpath目录下寻找
2,FileOutputStream fos = new FileOutputStream("Count.txt");
BuffereOutputStream bos = new BuffereOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
它为什么会利用bos创建缓冲区呢 dos包装bos不是只是让dos指向了Count.txt这个文件吗
谢谢

------解决方案--------------------
1.正确
虚拟机启动时bootstrap classloader 开始工作,它负责加载Java的核心类。
然后是extension classloader 工作,它负责加载的扩展目录(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系统属性指定的)中JAR的类包。
最后是system classloader,它负责加载-classpath或者java.class.path系统属性或者 CLASSPATH操作系统属性所指定的JAR类包和类路径。
------解决方案--------------------
BufferedOutputStream 只是为了更方便的读取数据,不用它也可以读,但是可能要一个字节一个字节的读,但是用它可以readLine()
------解决方案--------------------
1.可以看一下在windows下的环境变量是怎么写的.
KEY:
CALSSPATH

VALUES:
.;
java目录\lib\tools.jar;
java目录\dt.jar;
java目录\lib;
这样就知道在装载类的时候从哪里找了,也就是为什么在class文件的目录下使用java命令,虚拟机可以找到要执行的类了.
 处理流不是简单的指向,抛开底层原理说就是可以有更多的方法可用.
------解决方案--------------------
节点流和处理流,处理流可以嵌套在节点流上,目的是增加灵活性。节点流一个字节一个字节的读,嵌套上处理流后可以一个单元一个单元的读写了,而且处理流增加了很多灵活的方法。