Java的Reader和Writer类 Li.043

FileReader 读取文件 import java.io.FileReader; import java.io.IOException; public class Demo1_FileReader { public static void main(String[] args) throws IOException { // Demo1(); FileReader fr = new FileReader("m.txt"); int b ; while ( (b = fr.read()) != -1){ System.out.println((char)b); } fr.close(); } private static void Demo1() throws IOException { FileReader fr = new FileReader("m.txt"); int x = fr.read(); System.out.println(x); System.out.println((char)x); } } FileWriter 字符写入文件 import java.io.FileWriter; import java.io.IOException; public class Demo2_FileWriter { public static void main(String[] args) throws IOException { FileWriter fw = new FileWriter("output....

September 2, 2021 · 4 分钟 · Lizicai

Java的IO流 Li.042

Java 的 IO 流 字节流, 字节流可以操作任何数据, 计算机中存储是字节流 InputStream OutputStream 字符流, 只能操作纯字符数据, 比较方便 Reader Writer 使用IO流要导入包, 使用时要进行异常处理, 使用后要释放资源 FileInputStream 读取一个文件 import java.io.FileInputStream; import java.io.IOException; public class Demo1_FileInputStream { public static void main(String[] args) throws IOException { FileInputStream fps = new FileInputStream("test.txt"); int x; while ((x = fps.read() ) != -1){ System.out.println(x); } fps.close(); } } read() 为什么接收的int类型 因为字节输入流可以操作任意类型的文件,比如图片音频等, 这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte, 有可能在读到中间的时候遇到111111111,那么这11111111是byte类型的-1, 我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收, 如果11111111会在其前面补上24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完, 而结束标记的-1就是int类型 字节输出流 write() void write(int b) throws IOException 在输出时int 去掉前3个byte字节, 写入第4个byte到文件中, 这个写是覆盖 import java....

August 30, 2021 · 4 分钟 · Lizicai

Java的File类 Li.041

File 相对路径文件或目录 绝对路径文件或目录 File(String pathname) 文件路径或目录 File(String parent, String child) 父文件路径, 和子文件名 File(File parent, String child) 父文件路径file, 和子文件名 import java.io.File; public class Demo1_File { public static void main(String[] args) { // Demo1(); // Demo2(); File parentFile = new File("/usr/local/etc/nginx/"); String child = "nginx.conf"; File file = new File(parentFile, child); } private static void Demo2() { String parent = "/usr/local/etc/nginx/"; String child = "nginx.conf"; File file = new File(parent,child); System.out.println(file.exists()); } // a....

August 29, 2021 · 3 分钟 · Lizicai

Java的异常类 Li.040

Java 的异常类 异常的体系 Throwable Error Exception RuntimeException 如果程序没有处理异常, JVM 自行处理, 把异常的名称和信息, 打印在控制台上. 异常的2种处理方式 try catch finally try catch try catch finally try finally throws public class Demo1_Exception { public static void main(String[] args) { Demo1 demo1 = new Demo1(); int x; try{ x = demo1.div(10,0); } catch (ArithmeticException e){ System.out.println(e.getClass()); System.out.println("test"); }finally { System.out.println("最后执行了吗"); } } } class Demo1 { public int div (int a, int b){ return a/b; } } public class Demo2_Exception { public static void main(String[] args) { int a = 0; int b = 10; int[] arr = {1, 2, 3}; int x ; arr = null; try { // x = b / a; System....

August 27, 2021 · 4 分钟 · Lizicai

Java的Map类 Li.039

Map 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 Map 与 Collection 接口的不同 Map 是双列的, Collection 是单列的 Map 是键唯一, Collection 的子体系Set是唯一的 Map 集合的数据结构值针对键有效, 跟值无关; Collection集合的数据结构是针对元素有效 Map 方法 V put(K key, V value) 添加键和值, 成功返回null, 覆盖重复key值, 则返回被覆盖的Value值 V remove(Object key) 通过key删除元素, 删除成功则返回Value值 boolean containsKey(Object key) Map 中是否包含Key值 boolean containsValue(Object value) Map 中是否包含Value值 boolean isEmpty() Map 是否为空 clear() 清空Map import java.util.Collection; import java.util.HashMap; import java.util.Map; public class Demo1_Map { public static void main(String[] args) { // Demo1(); Map<String, Integer> hashMap = new HashMap<>(); hashMap....

August 24, 2021 · 8 分钟 · Lizicai

Java的Set类 Li.038

Set 无序 不可重复 import java.util.HashSet; public class Demo1_HashSet { public static void main(String[] args) { HashSet<String> hs = new HashSet<>(); boolean b1 = hs.add("a"); boolean b2 = hs.add("a"); System.out.println(hs); System.out.println(b1+" "+b2); for(String s:hs){ System.out.println(s); } } } HashSet 的重写hashCode() 方法, hashCode值一致时, 调用equals方法 使用HashSet 存取元素时, 这个元素必须重写 hashCode 和 equals方法 import lombok.Getter; import lombok.Setter; import java.util.Objects; public class Person { public Person(){} public Person(String name, int age){ this.name = name; this.age = age; } @Getter @Setter private String name; @Getter @Setter private int age; @Override public String toString(){ return "Person" + this....

August 22, 2021 · 6 分钟 · Lizicai

Java的List类 Li.037

List 练习Person 集合去重 @Data @AllArgsConstructor @NoArgsConstructor public class Person { private String name; private int age; @Override public boolean equals(Object obj) { Person p = (Person) obj; boolean d = false; if(this.getAge() == p.getAge() && this.getName() == p.getName()){ d = true; } else{ d = false; } return d; } } import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Demo2_ArrayList { public static void main(String[] args) { List list = new ArrayList(); list....

August 20, 2021 · 5 分钟 · Lizicai

Java的Collection集合一 Li.036

Collection 和 数组区别 数组可以存储基本数据类型, 也可以存储引用数据类型 集合可以存储引用数据类型, 也能存基本数据类型, 存储时会自动装箱 数组的长度固定, 不可以自由增加 集合长度可变, 可以自由增加 List Set 集合 List 有序集合, 存取位置一致 有索引 可存储重复数据 Set 无序集合, 存取位置不一致 无索引 不可存储重复数据 List 体系 ArrayList LinkedList Vector ArrayList 底层是数组, 查询快, 增删慢 线程不安全, 效率高 LinkedList 链表实现, 查询慢, 增删快 线程不安全, 效率高 Vection 数组实现, 查询快, 增删慢 线程安全, 效率低 Set 体系 HashSet TreeSet HashSet 哈希算法 TreeSet 二叉树算法 ArrayList 的 boolean add(E e) 方法一直返回true, Set 集合存取重复元素时, 则返回false boolean remove(Object o) 一次删除一个对象 int size() 打印集合对象数 void clear() 清空集合 boolean isEmpty() 判断集合是否为空 public class Demo2_Collection { public static void main(String[] args) { Collection collection = new ArrayList(); boolean b1 = collection....

August 19, 2021 · 3 分钟 · Lizicai