高级for循环
|--高级for循环格式:
for(数据类型 变量名 :被遍历的集合(Collection)或者是数组)
|--高级for循环:对集合进行遍历,只能获取元素,但是不能对集合进行过多的操作;
|--而迭代器是:出了遍历,还可以进行remove集合中元素的动作,
|--如果用ListIterator,还可以在遍历的过程中对集合进行增删改查的动作;
|--传统for和高级for循环有什么区别:
高级for有一个局限性:必须有被遍历的目标;
建议在变量数组的时候还是要使用传统for,因为传统for可以定义角标;
IO流
文本数据:字符流
图片:字节流,字节流是通用的,
字符流:Reader和Writer 都是用来操作文件的
|--数据最常见的体现形式就是文件
|--FileWriter用于操作文件的;这个是专门用于操作文件的是Writer的子类
close和flush的区别:fulsh刷新后,流可以继续使用,而close刷新后,流就会自动关闭
|--close关闭资源,但是在关闭之前要刷新一次内部的缓冲中的数据;将数据刷到目的地中;
|--write-->close;先写,之后然后要做一个close
对异常的处理:在外面建立引用,在里面进行初始化;
|--想要在原来的文件上面进行续写:当boolean型的为true的时候,在文件的末尾处进行续写;
|--FileWrite fw = new FileWriter("demo.txt",true);进行文件的续写;
|--read()是一次读一个字符;如果读到了末尾就返回-1
文件的读取有两种方式
|--一个是一次读取一个字符
|--通过字符数组进行读取;就是定义一个字符数据,将读取到的字符存储到数组里面;
拷贝文件
把c盘中的一个文件复制到d盘;
|--在d盘创建一个文件,用于存储c盘中中的文件中的数据
|--定义读取流和c盘文件相关联
|--通过不断的读写完成数据存储;
|--关闭资源;
字符流缓冲区
缓冲区的出现是提高了数据的读写效率;
|--BufferedReader
|--BufferedWriter
|--只要用到缓冲区就要进行刷新,只要看到buffered就要进行刷新;
|--newLine的方法是跨平台的换行符,只有用到了缓冲区对象,才能用到newLine的方法,就是换行符;
|--BufferedReader提供了一次读取一行的方法,就是readLine方法,一次读取一行的方法;方便文本上数据的获取;
继承和装饰的区别
|--装饰模式要比继承要灵活,避免了继承体系的臃肿;
|--而且降低了类与类之间的关系
装饰类是因为增强了已有的对象,具备的功能和已有的功能相同,只不过提供了更强的功能,所以装饰类和被装饰类通常是属于一个体系中的;
字节流的读写操作
操作的数据都是字节数据;字符流其实也是默认的字节流;
写的操作:字符流的是字符数组,字节流的字节数组
字节流的读:读一个字符的方法;还有一个就是读字节数组的方法,用一个字节数组存起来;
|--网上有个哥们的面试题:要将一个已有文件中的字符串,复制到另一个文件中,但是到另一个文件中的字符串是倒序着的;如果要实现这个功能的话,要先定义一个StringBuilder这个缓冲区,需要通过缓冲区里面的字符串进行反转,注意,这是还是一个缓冲区,需要将这个缓冲区里面的东西变成字符串,要用到字符串里面的toString方法;
|--StringBuilder sb = new StringBuilder();
|--String str = sb.reverse().toString();-->这个是将缓冲区里面的东西,要变成字符串,就是要将这个反转后的字符串写入到另一个文件中;
|--append()和reverse()方法都是StringBuilder里面的方法;要想变成字符串要用到String里面的toString()方法;
|--将字符串进行大小写的切换是字符串里面的方法;就是String里面的方法,可以直接拿过来用;
一个重要的总结:
|--什么时候要使用write写入数据?当要把一个数据写入到另一个文件中的时候,这时候就要用到write()方法,记住还要有刷新动作;
|--什么时候不要用write()方法?在进行要将一些数据打印到控制台上的时候,这是就不要用到write()方法;而是直接写一个输出语句即可;就是System.out.println();
|--转换流里面要传一个字节流的文件;
|--转换流里面都是字节流的;就是那个长点的;
|--在复制文件,包括复制的是文本文件,还是图片,在操作图片文件的时候,要定义一个字节缓冲区,读取的方法是read()!=-1方法;但是在操作文本文件的时候,只要String line =null;这个操作字符串比较的方便;然后就是频繁的读和写了;
|--如果操作的是图片文件,因为图片文件比较的复杂,那么就要用简单的就是字节流,而字节流对应的是长的,就是InputStream和OutputStream;
|--如果操作的是纯文本文件的话,因为文本都是简单的,那么对应的就是复杂的字符流,而字符流对应的是短的,就是Reader和Writer;
|--如果要是说明要用键盘或者是控制台的时候,那么就要用到转换流的操作;其他的可以不要用转换流的操作;
递归:因为目录中还有目录只要使用同一个列出目录功能的函数完成即可,在列出的过程中出现的还是目录的话,还可以再次调用本功能,也就是函数自身调用自身,这种表现形式,或者是编程手法,称为递归;
|--递归要注意的是要限定条件;
|--要主要递归的次数;尽量避免内存溢出;
Properties
|--Properties:是hashCode的子类,也就是说它具备集合的特点,而且它里面存储的是键值对都是字符串;
|--是集合中的IO技术相结合的集合容器,该对象的特点:可以用于键值对形式的配置文件;