回顾

  1. 输入流
  2. 字节输入流:FileInputStream
  3. read()
  4. 本身没有缓冲,需要加缓冲流BufferedInputStream
  5. 字符输入流:FileReader
  6. 本身没有缓冲,需要加缓冲流BufferedReader
  7. 输入流
  8. 字节输出流:FileOutputStream
  9. write()
  10. 本身没有缓冲,需要加缓冲流BufferedOutputStream
  11. 字符输出流:FileWriter
  12. 本身没有缓冲,需要加缓冲流BufferWriter

1.IO流

1.1字符输入流

字符输入流:FileReader

  1. 阅读字符文件(txt)的便利类。图片、音频、视频属于字节不能使用字符流
  2. 字符流本质还是字节流,只不过需要一个解码的过程。

FileReader案例

  1. package com.qfedu.test1IOliu;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. //字符输入流案例 FileReader
  7. public class Demo1 {
  8. public static void main(String[] args) throws IOException {
  9. //输入流就是磁盘读取到内存
  10. //1.创建文件对象,要被读取的文件对象
  11. File file = new File("E:/aaa/3.txt");
  12. //2.创建字符输入流
  13. FileReader fr = new FileReader(file);
  14. //3.添加缓冲
  15. BufferedReader br = new BufferedReader(fr);
  16. //4.字符数组
  17. char[] ch = new char[1024 * 4];
  18. int length = -1;
  19. while((length = br.read(ch)) != -1) {
  20. System.out.println(length);
  21. }
  22. //字符数组是可以在控制台打印的
  23. System.out.println(ch);
  24. br.close();
  25. fr.close();
  26. }
  27. }

1.2字符输出流

2.常用类

2.1StringBuffer

线程安全的,可变字符串序列

String是不可变的,不改变内存地址

addend:拼接

insert:在指定位置添加

reverse:字符串反转(倒叙)

  1. package com.qfedu.test2changyongclass;
  2. public class Demo1 {
  3. public static void main(String[] args) {
  4. String string = "哈哈";
  5. String string1 = string + "呵呵";
  6. System.out.println(string1);
  7. StringBuffer sb = new StringBuffer("start");
  8. System.out.println(sb);
  9. sb.append("啊?");//这样拼接 内存地址不变
  10. System.out.println(sb);
  11. sb.insert(2, "啥");//在指定位置插入字符串
  12. System.out.println(sb);
  13. StringBuffer sb1 = sb.reverse();//字符串反转
  14. System.out.println(sb1);
  15. }
  16. }

2.2枚举(enum)

java中的枚举是一个特殊的类,一般表示一组常量(final static int WEEK),比如一年有12个月,四个季节

java中定义枚举类使用关键字 enum,常量之间用逗号“,”隔开

  1. package com.qfedu.test3enum;
  2. public enum Coler {
  3. //下面写常量,而且常量都是大写的
  4. RED,GREEN,BULE
  5. //代表的就是三种颜色,没必要赋值
  6. }

2.2.1使用实例:

  1. package com.qfedu.test3enum;
  2. //枚举使用的案例
  3. enum Color2{
  4. RED,GREEN,BULE
  5. }
  6. public class Demo2 {
  7. public static void main(String[] args) {
  8. Color2 color2 = Color2.RED;//枚举类.常量
  9. System.out.println(color2);
  10. }
  11. }

2.2.2枚举在swich case中的使用【重点】

  1. package com.qfedu.test3enum;
  2. //枚举在swich case中的使用
  3. enum Color3{
  4. RED,GREEN,BLUE
  5. }
  6. public class Demo3 {
  7. public static void main(String[] args) {
  8. Color3 color3 = Color3.BLUE;
  9. switch (color3) {
  10. case RED:
  11. System.out.println("红色");
  12. break;
  13. case GREEN:
  14. System.out.println("绿色");
  15. break;
  16. case BLUE:
  17. System.out.println("蓝色");
  18. break;
  19. default:
  20. System.out.println("没有这个颜色");
  21. break;
  22. }
  23. }
  24. }

2.2.3枚举下面的方法

  1. values(); //返回枚举中所有的值 返回一个数组
  2. ordial(); //可以找到每个枚举的常量索引
  3. valueof(); //返回指定字符串的枚举常量
  1. package com.qfedu.test3enum;
  2. enum Color4{
  3. RED,GREEN,BULE
  4. }
  5. public class Demo4 {
  6. public static void main(String[] args) {
  7. //返回枚举中所有的值 返回一个数组
  8. Color4[] color4s = Color4.values();
  9. for (Color4 color4 : color4s) {
  10. System.out.println(color4);
  11. //可以找到每个枚举的常量索引
  12. System.out.println("索引" + color4.ordinal());
  13. }
  14. System.out.println("----------");
  15. //返回指定字符串的枚举常量
  16. System.out.println(Color4.valueOf("RED"));
  17. System.out.println(Color4.valueOf("YELLOW"));//没有就会报错
  18. }
  19. }

2.2.4 枚举高级用法

枚举和普通类一样,可以有自己的常量,方法,构造方法等,构造方法只能是private修饰的,外部类不能使用!!!!枚举可以有普通方法,也可以有抽象方法。

枚举中的抽象方法,必须去用常量重写方法

  1. package com.qfedu.test3enum;
  2. //枚举高级使用
  3. enum Color5{
  4. RED {
  5. @Override
  6. public void eat() {
  7. // TODO Auto-generated method stub
  8. System.out.println("红色");
  9. }
  10. },GREEN {
  11. @Override
  12. public void eat() {
  13. // TODO Auto-generated method stub
  14. System.out.println("绿色");
  15. }
  16. },BULE {
  17. @Override
  18. public void eat() {
  19. // TODO Auto-generated method stub
  20. System.out.println("蓝色");
  21. }
  22. };
  23. final static int age = 7;
  24. private Color5() {//构造方法 外部使用不了
  25. }
  26. //正常方法
  27. public void colorInfo() {
  28. System.out.println("颜色的表示形式");
  29. }
  30. //抽象方法
  31. public abstract void eat();
  32. }
  33. public class Demo5 {
  34. public static void main(String[] args) {
  35. for (Color5 c5 : Color5.values()) {
  36. c5.eat();
  37. }
  38. System.out.println("------");
  39. Color5.BULE.eat();
  40. System.out.println(Color5.age);
  41. }
  42. }