请问;
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.   

    1.正确
        虚拟机启动时bootstrap classloader 开始工作,它负责加载Java的核心类。
        然后是extension classloader 工作,它负责加载的扩展目录(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系统属性指定的)中JAR的类包。
        最后是system classloader,它负责加载-classpath或者java.class.path系统属性或者 CLASSPATH操作系统属性所指定的JAR类包和类路径。
      

  2.   

    BufferedOutputStream 只是为了更方便的读取数据,不用它也可以读,但是可能要一个字节一个字节的读,但是用它可以readLine()
      

  3.   

    1.可以看一下在windows下的环境变量是怎么写的.
    KEY:
    CALSSPATHVALUES:
    .;
    java目录\lib\tools.jar;
    java目录\dt.jar;
    java目录\lib;
    这样就知道在装载类的时候从哪里找了,也就是为什么在class文件的目录下使用java命令,虚拟机可以找到要执行的类了.
     处理流不是简单的指向,抛开底层原理说就是可以有更多的方法可用.
      

  4.   

    问题2补充:dos包装bos bos包装fos有什么作用呢 是不是包装了以后 dos就可以用bos和fos的成员呢?
    谢谢
      

  5.   

    这就是Decorator模式,即Wrapper模式的应用
    不修改类的代码和类接口原有结构的前提下扩展功能
    但因为它引入了更多对象 增加了调试的难度
    尤其是增加了灵活性之后可能会产生新的错误