I/O 输出流:程序(内存)---> 外界设备 输 ⼊流:外界设备---> 程序(内存) 处理数据类型分类 字符流:处理字符相关,如处理 ⽂本数据(如 txt⽂件), Reader/Writer 字节流: 处理字节相关,如声 ⾳或者图 ⽚等 ⼆进制,InputStream/OutputStream 字符流和字节流区别 字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,⼀次可能读多个字节。 字节流可以处理 ⼏乎所有 ⽂件,字符流只能处理字符类型的数据。 InputStream InputStream 是输 ⼊字节流的 ⽗类,它是 ⼀个抽象类(⼀般 ⽤他的 ⼦类) 常见方法 //讲解:从输⼊流中读取单个字节,返回0到255范围内的int字节值,字节数据可直接转换为int类 型, 如果已经到达流末尾⽽没有可⽤的字节,则返回-1 int read() //从输⼊流中读取⼀定数量的字节,并将其存储在缓冲区数组buf中, 返回实际读取的字节 数,如果已经到达流末尾⽽没有可⽤的字节,则返回-1 int read(byte[] buf) //从输⼊流中....
File 通常以计算机硬盘为载体存储在计算机上的信息集合,可以是 ⽂本、图 ⽚、视频、程序等,⽂件 ⼀般有拓展名,表示 ⽂件的类型。 Directory 为了便于对 ⽂件进 ⾏存取和管理,⽂件 ⽬录是由 ⽂件 ⽬录项组成的。⽂件 ⽬录分为 ⼀级 ⽬录、⼆级 ⽬录和多级 ⽬录。多级 ⽬录 结构也称为树形结构,在多级 ⽬录结构中,每 ⼀个磁盘有 ⼀个根 ⽬录,在根 ⽬录中可以包含 若 ⼲ ⼦ ⽬录和 ⽂件,在 ⼦ ⽬录中不但可以包含 ⽂件,⽽且还可以包含下 ⼀级 ⼦ ⽬录。 转义符 反斜杠(\)是 ⼀个特殊的字符,被称为转义字符,⽤来转义后 ⾯ ⼀个字符。转义后的字符通常 ⽤于表示 ⼀个不可 ⻅的字符或具有特殊含义的字符,⽐如 \n 则表示换 ⾏,?问号 ," 则表示 双引号,' 表示 ⼀个单引号 等 在 Java 中的字 ⺟前 ⾯加上反斜线""来表示常 ⻅的那些不能显示的 ASCII 字符,我们称之为转 义字符。 相对路径 相对某个基准 ⽬录或者 ⽂件的路径, ./ 表示当前路径; ../ 表示上级 ⽬录。 绝对路径 存储在硬盘上的真正路径 window 路径分割符 \....
该文章已经加密。
HashCode 方法 顶级类 Object⾥ ⾯的 ⽅法,所有类都是继承 Object 的,返回值 int 类型。 根据 ⼀定的 hash 规则(存储地址,字段,或者 ⻓度等),映射成 ⼀个数值,即散列值。 Equals 方法 顶级类 Object⾥ ⾯的 ⽅法,所有类都是继承 Object 的,返回值 boolean 类型。 根据 ⾃定义的匹配规则,⽤于匹配两个对象是否 ⼀样, ⼀般逻辑是如下: 重写规则如下: /** * 1、判断地址是否⼀样 * 2、⾮空判断和class类型判断 * 3、强转 * 4、对象里面的字段一一匹配 */ @Override public boolean equals(Object o) { //判断地址是否一样 if (this == o) { return true; } //⾮空判断和class类型判断 if (o == null || getClass() != o.getClass()) { return false; } //强转 Student student = (Student) o; //对象里面的字段一一匹配 return ....
Objects 工具类 jdk1.7 引进的 ⼯具类,都是静态调 ⽤的 ⽅法,jdk1.8 新增了部分 ⽅法。 重点方法 equals:⽤于字符串和包装对象的 ⽐较,先 ⽐较内存地址,再 ⽐较值 String str1 = "abc"; String str2 = "abc"; System.out.println(Objects.equals(str1, str2)); //true deepEquals:数组的 ⽐较,先 ⽐较内存地址,再 ⽐较值,如 String/char/byte/int 数组, 或者包 装类型 Integer 等数组。 String[] arr1 = {"aa", "bb", "cc"}; String[] arr2 = {"aa", "bb", "cc"}; System.out.println(Objects.deepEquals(arr1,arr2)); //true hashCode:返回对象的 hashCode,若传 ⼊的为 null,返回 0 System.out.println(Objects.hashCode("abc"))....
Comparable 是 ⼀个接 ⼝,定制排序规则。 对实现它的每个类的对象进 ⾏整体排序,⾥ ⾯ compareTo ⽅法是实现排序的具体 ⽅法。 比如 TreeSet、SortedSet、Collections.sort() ⽅法调 ⽤进 ⾏排序。 String、Integer 等类默认实现了这个接 ⼝,所以可以排序(看源码)。 Comparable 适合于排序规则固定的情况,Comparator(匿名内部类)适合于排序规则变化的情况。 public interface Comparable<T> { public int compareTo(T o); } POJO 类需要实现 Comparable 接口 package com.javase.demo; import lombok.AllArgsConstructor; import lombok.Data; @AllArgsConstructor @Data public class Student implements Comparable{ private String name; private int....
Collections Java⾥关于集合的 ⼯具类,包含有各种有关集合操作的静态多态 ⽅法,不能实例化(把构造函 数私有化)。 Collection 与 Collections 区别 Collection 是接 ⼝,提供了对集合对象进 ⾏基本操作的通 ⽤接 ⼝ ⽅法,List、Set 等多种具体的 实现类。 Collections 是 ⼯具类,专 ⻔操作 Collection 接 ⼝实现类 ⾥ ⾯的元素。 常见方法 排序 @Test public void collectionsIteratorTesting() { ArrayList<String> list = new ArrayList<>(); list.add("bbb"); list.add("aaa"); list.add("ccc"); System.out.println(list);////不指定排序,默认按照自然升序排序 [aaa, bbb, ccc] Collections.sort(list,Comparator.naturalOrder()); //升序 [aaa, bbb,....