这个程序语句是什么意思?谢谢!

时间:2022-09-08 15:37:29
DataInputStream in=
new DataInputStream(
new BufferedInputStream(
new FileInputStream("TestEof,java")));

偶不能够很好的理解这种嵌套的语句的含义,请高手给详细指点一下,谢谢!

21 个解决方案

#1


实际上就相当于
FileInputStream fs = new new FileInputStream("TestEof,java");
BufferedInputStream bf = new BufferedInputStream(fs);
DataInputStream in = new DataInputStream(bf);

这样写你应该明白了吧

DataInputStream in=
new DataInputStream(
new BufferedInputStream(
new FileInputStream("TestEof,java")));

这样写只是为了节省代码,实际上跟上面3条语句是等效的

#2


同意楼上的。

#3


分开看就好了。少了几个变量定义而已

#4


分開好看呀。我覺得是這樣 ̄1

#5


你最好看看api,搞清构造函数的参数,有个规律:针对接口编程(基类)。
记住这一点,然后掌握常用类的层次就结构就可以了。

#6


你看下关于内部类的资料就应该能有所了解

#7


匿名实例了````哈哈~~~`

#8


建议楼主顺便看一下《设计模式》中的Decorator Pattern
Java的IOStream是一个典型的Decorator Pattern
每一个Decorator都可以为对象增加新的能力。

#9


关键是在以上的基础上,各个Stream的嵌套的具体的含义是什么,是类型转换?还是?

#10


DataInputStream in=
new DataInputStream(
   new BufferedInputStream(
      new FileInputStream("TestEof,java")));

和一下代码的意义相同
FileInputStream fs = new FileInputStream("TestEof.java");
BufferedInputStream bs = new BufferedInputStream(fs);
DataInputStream in = new DataInputStream(bs);


FileInputStream, BufferedInputStream和DataInputStream都实现了InputStream接口
而BufferedInputStream和DataInputStream的参数都是InputStream

#11


一楼的已经说的很详细了。

-----------------

#12


FileInputStream fs = new new FileInputStream("TestEof,java");
BufferedInputStream bf = new BufferedInputStream(fs);
DataInputStream in = new DataInputStream(bf);

这样写好理解多了

#13


^_^,一楼已经说的很详细了,这个就是Decorator模式!

Decorator模式常用于如下的情形:如果用继承来解决各种需求的话,类的数量会多到不切实际的地步。Java的I/O类库需要提供很多功能的组合,于是decorator模式就有了用武之地。 但是decorator有个缺点,在提高编程的灵活性的同时(因为你能很容易地混合和匹配属性),也使代码变得更复杂了。Java的I/O类库之所以会这么怪,就是因为它"必须为一个I/O对象创建很多类",也就是为一个"核心"I/O类加上很多decorator。

#14


哈哈哈,都说完了,帮你顶

#15


说明你还是没有理解过滤流的作用和用法,

#16


那么你怎么知道,其他的两个变量就是bf,fs啊!!!

#17


java io的感觉就是乱套(嵌)的

#18


都乱了套了。

#19


明白没有?我接分
:)

#20


各位大哥,小弟菜鸟一名,以后有什么问题请大家帮帮忙教我哈子,我不甚感激啊!
   我自己建了个QQ群:2869593,刚刚升为高级群!为大家以后交流提供一个地方,希望各位编程界的
哥哥姐姐们都来捧场,谢谢大家了!

#21


>关键是在以上的基础上,各个Stream的嵌套的具体的含义是什么,是类型转换?还是?

唉,看到这么多贴子无视“关键”,还是让本教练来教吧。年度最佳教练在此,先把耳朵洗干净。

JAVA 中用流处理 IO,主要的流有两类,一类是节点流,一类是过滤器流。可以认为节点流是底层的流,只提供了有限的功能。而在处理流时,你可能需要一些更高级的功能,这时怎么办呢?使用过滤器流。

过滤器流是建立在其他流之上的流,它们提供了丰富的功能。因此当你正在使用的流没有提供你需要使用的功能时,你就可以用它构造一些更高级的流,直到构造的流提供了你所需要的功能。

DataInputStream in=
new DataInputStream(
new BufferedInputStream(
new FileInputStream("TestEof,java")));

最初只有一个文件输入流(节点流),但要想使用 readInt、readDouble 方法,就必须用最初的流构造出 DataInputStream 来。:)

#1


实际上就相当于
FileInputStream fs = new new FileInputStream("TestEof,java");
BufferedInputStream bf = new BufferedInputStream(fs);
DataInputStream in = new DataInputStream(bf);

这样写你应该明白了吧

DataInputStream in=
new DataInputStream(
new BufferedInputStream(
new FileInputStream("TestEof,java")));

这样写只是为了节省代码,实际上跟上面3条语句是等效的

#2


同意楼上的。

#3


分开看就好了。少了几个变量定义而已

#4


分開好看呀。我覺得是這樣 ̄1

#5


你最好看看api,搞清构造函数的参数,有个规律:针对接口编程(基类)。
记住这一点,然后掌握常用类的层次就结构就可以了。

#6


你看下关于内部类的资料就应该能有所了解

#7


匿名实例了````哈哈~~~`

#8


建议楼主顺便看一下《设计模式》中的Decorator Pattern
Java的IOStream是一个典型的Decorator Pattern
每一个Decorator都可以为对象增加新的能力。

#9


关键是在以上的基础上,各个Stream的嵌套的具体的含义是什么,是类型转换?还是?

#10


DataInputStream in=
new DataInputStream(
   new BufferedInputStream(
      new FileInputStream("TestEof,java")));

和一下代码的意义相同
FileInputStream fs = new FileInputStream("TestEof.java");
BufferedInputStream bs = new BufferedInputStream(fs);
DataInputStream in = new DataInputStream(bs);


FileInputStream, BufferedInputStream和DataInputStream都实现了InputStream接口
而BufferedInputStream和DataInputStream的参数都是InputStream

#11


一楼的已经说的很详细了。

-----------------

#12


FileInputStream fs = new new FileInputStream("TestEof,java");
BufferedInputStream bf = new BufferedInputStream(fs);
DataInputStream in = new DataInputStream(bf);

这样写好理解多了

#13


^_^,一楼已经说的很详细了,这个就是Decorator模式!

Decorator模式常用于如下的情形:如果用继承来解决各种需求的话,类的数量会多到不切实际的地步。Java的I/O类库需要提供很多功能的组合,于是decorator模式就有了用武之地。 但是decorator有个缺点,在提高编程的灵活性的同时(因为你能很容易地混合和匹配属性),也使代码变得更复杂了。Java的I/O类库之所以会这么怪,就是因为它"必须为一个I/O对象创建很多类",也就是为一个"核心"I/O类加上很多decorator。

#14


哈哈哈,都说完了,帮你顶

#15


说明你还是没有理解过滤流的作用和用法,

#16


那么你怎么知道,其他的两个变量就是bf,fs啊!!!

#17


java io的感觉就是乱套(嵌)的

#18


都乱了套了。

#19


明白没有?我接分
:)

#20


各位大哥,小弟菜鸟一名,以后有什么问题请大家帮帮忙教我哈子,我不甚感激啊!
   我自己建了个QQ群:2869593,刚刚升为高级群!为大家以后交流提供一个地方,希望各位编程界的
哥哥姐姐们都来捧场,谢谢大家了!

#21


>关键是在以上的基础上,各个Stream的嵌套的具体的含义是什么,是类型转换?还是?

唉,看到这么多贴子无视“关键”,还是让本教练来教吧。年度最佳教练在此,先把耳朵洗干净。

JAVA 中用流处理 IO,主要的流有两类,一类是节点流,一类是过滤器流。可以认为节点流是底层的流,只提供了有限的功能。而在处理流时,你可能需要一些更高级的功能,这时怎么办呢?使用过滤器流。

过滤器流是建立在其他流之上的流,它们提供了丰富的功能。因此当你正在使用的流没有提供你需要使用的功能时,你就可以用它构造一些更高级的流,直到构造的流提供了你所需要的功能。

DataInputStream in=
new DataInputStream(
new BufferedInputStream(
new FileInputStream("TestEof,java")));

最初只有一个文件输入流(节点流),但要想使用 readInt、readDouble 方法,就必须用最初的流构造出 DataInputStream 来。:)