JAVA CharArrayReader流的作用性?

CharArrayReader类的作用性体现在哪里?

该类的构造函数和方法都能理解但是就不能理解作用性也就是用在什么时候什么地方?

如我要读取一个文件,那么就是很明显的知道会用BufferedReader包装InputStreamReader来读取,但是关于CharArrayReader类的实在不明白作用体现在那里。因为如果是要字符数组中的元素,那么完全可以用Arrays类来操作

reader相比较数组,它的有点是可以节约内存,因为它本身相当于一个指针,而不用存储全部数据。但是作为代价,它牺牲了灵活性,通常来说,它是线性的,从前往后,它要随机访问就不如数组方便。

好比一个是磁带一个是光盘,磁带虽然可以倒带,但是基本上它是顺序播放的,而光盘,就可以快速从一个地方转到另一个地方。

另外你需要理解的是,java提供的很多功能,彼此可以是重叠的,所以不应该从必要性的角度理解这个有什么用处,而是应该从方便性的角度去理解,多一个方式多一个方便嘛。

Reader来读取,但是关于CharArrayReader类的实在不明白作用体现在那里。因为如果是要字符数组中的元素,那么完全可以用Arrays类来操作

它可以不直接用,但可以配合其他流来用,主要在某些应用场景下用它更方便,如果有人给你发一段字符流或本身就有一个字符数组,你想读取其中的一行数据,就可以用它:
String s = "dsfsdfd\r\nsfdsf\r\ndfdfdfd";
CharBuffer buf = CharBuffer.wrap(s.toCharArray());
CharArrayReader car = new CharArrayReader(buf.array());
BufferedReader br = new BufferedReader(car);
System.out.println(br.readLine());

打一个比方,java提供的循环语句就有好几种,你完全可以说for循环是多余的,任何for能解决的问题,我用while都能解决。
任何 for (a;b;c) { d; }
都可以写 a;while(b) { d; c; }
或者说,我就喜欢用while循环,我不是一样能写程序么,为什么要for循环。但是for为了某种专门的用途的循环提供了更简便的写法,仅此而已。

switch也可以被if代替啊,toString和balueOf也可以互换啊,等等。哪怕是日常语言,姥姥和外婆有一个就好了,为什么要另一个。等等,对吧。

这个是内存操作流,用于临时存储信息,程序结束,数据从内存中消失