作用:
可变的字符串对象,提供了操作字符串一些方法,拼接时效率更高,会使用该对象。拼接时不会创建新的字符串对象
创建对象:
//public StringBuilder() 创建一个空白的可变的字符串对象,不包含任何内容 //public StringBuilder(String str) 创建一个指定字符串内容的可变字符串对象
常见方法:
//public StringBuilder append(任意类型) 添加数据并返回StringBuilder对象本身 //public StringBuilder reverse() 将对象的内容反转 //public int length() 返回对象内容长度 //public String toString() 通过toString()就可以实现把StringBuilder转换为String
作用:
数学类,工具类,提供了一些数学运算的方法
常见方法:
// 1、public static int abs(int a):取绝对值(拿到的结果一定是正数) // 2、public static double ceil(double a): 向上取整 // 3、public static double floor(double a): 向下取整 // 4、public static long round(double a):四舍五入 // 5、public static int max(int a, int b):取较大值 // public static int min(int a, int b):取较小值 // 6、 public static double pow(double a, double b):取次方 // 7、public static double random(): 取随机数 [0.0 , 1.0) (包前不包后)
作用:
系统类,工具类,提供了操作当前系统的方法
常见方法:
// 1、public static void exit(int status): 终止当前运行的Java虚拟机。 //该参数用作状态代码; 按照惯例,非零状态代码表示异常终止。 // 2、public static long currentTimeMillis(): 获取当前系统的时间 //返回的是long类型的时间毫秒值:指的是从1970-1-1 0:0:0开始走到此刻的总的毫秒值,1s = 1000ms
作用:
大小数类,解决浮点型运算时出现的精度丢失问题
创建对象:
// 1、把浮点型数据封装成BigDecimal对象,再来参与运算。 // a、public BigDecimal(double val) 得到的BigDecimal对象是无法精确计算浮点型数据的。 注意:不推荐使用这个, // b、public BigDecimal(String val) 得到的BigDecimal对象是可以精确计算浮点型数据的。 推荐使用。
常见方法:
// 2、public BigDecimal add(BigDecimal augend): 加法 // 3、public BigDecimal subtract(BigDecimal augend): 减法 // 4、public BigDecimal multiply(BigDecimal augend): 乘法 // 5、public BigDecimal divide(BigDecimal b): 除法 //注意:如果除不尽,就会报错ArithmeticException // 6、public BigDecimal divide(另一个BigDecimal对象,精确几位,舍入模式:RoundingMode.HALF_UP) : 除法,可以设置精确几位。 // 7、public double doubleValue() : 把BigDecimal对象又转换成double类型的数据。
作用:
代表年月日星期
作用:
代表时分秒纳秒
作用:
代表年月日时分秒纳秒
创建对象:
// 01、获取本地日期和时间对象 now()。 // 02、获取指定日期和时间的LocalDateTime对象:// public static LocalDateTime of(int year, Month month, int dayOfMonth, int hour)
常见方法:
// 1、可以获取日期和时间的全部信息 // getYear getMonthValue getDayOfMonth getDayOfWeek().getValue()获取周几 getHour getMinute getSecond getNano // 2、修改时间信息: // withYear withMonth withDayOfMonth withDayOfYear withHour // withMinute withSecond withNano // 3、加多少: // plusYears plusMonths plusDays plusWeeks plusHours plusMinutes plusSeconds plusNanos // 4、减多少: // minusDays minusYears minusMonths minusWeeks minusHours minusMinutes minusSeconds minusNanos // 6、 判断2个日期、时间对象,是否相等,在前还是在后: equals、isBefore、isAfter // 7、可以把LocalDateTime 转换成 LocalDate和LocalTime // public LocalDate toLocalDate() // public LocalTime toLocalTime() // 8、LocalDate和LocalTime 转换成 LocalDateTime // public static LocalDateTime of(LocalDate date, LocalTime time)
作用:
代表时区对象
创建对象:
// public static ZoneId of(String zoneId) : 把某个时区id封装成ZoneId对象。 America/New_York
常见方法:
// public static SetgetAvailableZoneIds(): 获取Java支持的全部时区Id // public static ZoneId systemDefault(): 获取系统默认的时区
作用:
代表是时区时间对象
创建对象:
// public static ZonedDateTime now(ZoneId zone): 获取某个时区的ZonedDateTime对象。 // public static ZonedDateTime now():获取系统默认时区的ZonedDateTime对象
常见方法:
// getXxx()获取 withXxx(时间)修改 minusXxx(时间)减少 plusXxx(时间)增加
作用:
代表时间戳对象
创建对象:
// 1、public static Instant now(); 创建Instant的不可变对象,获取此刻时间戳信息,世界标准时间
常见方法:
// 2、public long getEpochSecond();获取从时间原点开始记录的总秒数 // 3、public int getNano(); 获取当前时间戳对象中不够1秒的纳秒数
作用:
时间格式化解析类
创建对象;
//public static DateTimeFormatter ofPattern(时间格式) 获取格式化器对象
常见方法:
//public String format(时间对象) 格式化时间 LocalDateTime类中的方法://public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter) 解析时间
作用:
代表年月日时间间隔对象
创建对象;
// 1、public static Period between(LocalDate start, LocalDate end); 创建Period对象,封装两个日期对象。
常见方法:
// 2、通过period对象获取两个日期对象相差的信息。public int getYears(); public int getMonths(); public int getDays();
作用:
代表时分秒时间间隔对象
创建对象:
// 1、public static Duration between(开始时间对象1,截止时间对象2); 得到Duration对象
常见方法:
// 2、获取两个时间对象间隔的信息 toxxx()
作用:
操作数组的工具类
常见方法:
// 1、public static String toString(类型[] arr): 返回数组的内容 // 2、public static 类型[] copyOfRange(类型[] arr, 起始索引(包含), 结束索引(不包含)) :拷贝数组 // 3、public static 类型[] copyOf(类型[] arr, int newLength):拷贝数组,可以指定新数组的长度。 // 4、public static void sort(类型[] arr):对数组进行排序(默认是升序排序)
常见方法:
//public boolean add(E e): 把给定的对象添加到当前集合中 。 //public void clear() :清空集合中所有的元素。 //public boolean remove(E e): 把给定的对象在当前集合中删除。 //public boolean contains(Object obj): 判断当前集合中是否包含给定的对象。 //public boolean isEmpty(): 判断当前集合是否为空。 //public int size(): 返回集合中元素的个数。 //public Object[] toArray(): 把集合中的元素,存储到数组中。 //public boolean addAll(Collectionc): 把一个集合的全部数据倒入到另一个集合中去。
三种遍历方式:
迭代器遍历 增强for遍历 forEach遍历(Lambda简化)
特点:
元素存取有序、可重复、有索引
常见特有方法:
//public void add(int index, E element): 在某个索引位置插入元素。 //public E remove(int index): 根据索引删除元素,返回被删除元素 //public E get(int index): 返回集合中指定位置的元素。 //public E set(int index, E element): 修改索引位置处的元素,修改成功后,会返回原来的数据
特有遍历方式:
普通for遍历
特点:
元素存取有序、可重复、有索引
数据结构:
数组结构,查询快、增删慢
底层原理:
1.创建集合对象时,先创建一个长度为0的数组 2.当添加第一个元素时,再创建一个长度为10的数组,将元素添加到第一个位置 3.元素添加满,再创建长度为原数组1.5倍的新数组,并将原数组元素拷贝新数组中 4.如果一次添加多个元素,1.5存不下时,创建一个长度为实际长度的数组
特点:
元素存取有序、可重复、有索引
数据结构:
双向链表结构,查询慢、增删快,对收尾元素的增删改查都极快
底层原理:
1.存储每个元素时,都会创建一个结点对象,该对象中会存储元素本身的值、上结点的地址值、下结点的地址值 2.如果在增删元素时,破坏结点原有指向、建立结点新的指向,增删效率较高 3.如果查询元素时,只能从头节点、尾结点,依次查找,查询效率较低,但对首尾元素操作效率极高
常见特有方法:
//public void addFirst(E e) 在该列表开头插入指定的元素 //public void addLast(E e) 将指定的元素追加到此列表的末尾 //public E getFirst() 返回此列表中的第一个元素 //public E getLast() 返回此列表中的最后一个元素 //public E removeFirst() 从此列表中删除并返回第一个元素 //public E removeLast() 从此列表中删除并返回最后一个元素
使用:
几乎没有自己特有的方法,都是使用Collection中的方法 及 三种遍历方式
特点:
无序、不重复、无索引
底层原理:
1.创建HashSet对象时,先创建一个长度为16的数组 2.添加元素时,会调用该对象的hashCode(),获取哈希值,和数组长度取余计算存储位置 3.判断该位置是否有元素,没有是null,直接存 4.如果有,调用该对象的equals(),和已经存储的元素一一对比,相等:直接不存(不重复原理),不相等:1.8之前挂载在老元素上面 1.8开始挂载在老元素下面 5.1.8开始后,挂载的链表如果过长>8,且数组长度>=64,会将链表转为红黑树结构 加载因子0.75,如果数组存储的元素是当前数组长度的0.75时,此时数组会自动扩容,创建原数组长度的2倍的新数组,原数组的元素会和新数组的长度重新计算存储位置
特点:
有序、不重复、无索引
底层原理:
和HashSet基本一样,多维护了一个双向链表,保证元素有序
特点:
可排序、不重复、无索引
底层原理:
红黑树结构 存储元素时,以结点的方式存储,创建一个结点对象:元素值、父结点地址值、左子结点地址值、右子结点地址值、颜色。 从根结点依次往下存,遵循左小右大的原则。
注意:
使用TreeSet集合存储元素时,该元素必须要指定排序规则
作用:
操作集合的工具类
常见方法:
// 1、public staticboolean addAll(Collection super T> c, T...elements):为集合批量添加数据 // 2、public static void shuffle(List> list):随机打乱List集合中的元素顺序。 // 3、 public static void sort(List list):对List集合中的元素进行升序排序。 // 4、public static void sort(List list, Comparator super T> c): 对List集合中元素,按照比较器对象指定的规则进行排序
特点:
HashMap 针对于键:无序、不重复、无索引 LinkedHashMap 针对于键:有序、不重复、无索引 TreeMap 针对于键:可排序、不重复、无索引 Set底层复用Map键的源码
常见方法:
// 1.put添加元素: 无序,不重复,无索引。 // 2.public int size():获取集合的大小 // 3、public void clear():清空集合 // 4.public boolean isEmpty(): 判断集合是否为空,为空返回true ,反之! // 5.public V get(Object key):根据键获取对应值 // 6. public V remove(Object key):根据键删除整个元素(删除键会返回键的值) // 7.public boolean containsKey(Object key): 判断是否包含某个键 ,包含返回true ,反之 // 8.public boolean containsValue(Object value): 判断是否包含某个值。 // 9.public SetkeySet(): 获取Map集合的全部键。 // 10.public Collection values(); 获取Map集合的全部值。 // 11.public boolean putAll(Map map); 把其他Map集合的数据倒入到自己集合中来。
三种遍历方式:
方式一: 1.获取所有键的set集合keySet(),遍历该集合获取每个键 2.get(key)通过键获取对应的值
方式二: 1.获取所有键值对的set集合entrySet(),遍历该集合获取每个键值对对象Entry 2.通过键值对对象entry分别获取键getKey()和值getValue()
方式三: forEach(BiConsumer匿名内部类对象),底层使用方式二
HashMap: 底层原理:和HashSet一样 不重复原理:重写hashCode和equasl方法
LinkedHashMap: 底层原理:和LinkedHashSet一样 不重复原理:重写hashCode和equasl方法
TreeMap: 底层原理:和TreeSet一样 不重复原理:排序规则重写方法的返回结果为0,即将存入的元素就不存
作用:
是一套API,操作集合和数组,代码更为简洁
创建对象:
集合.steram() Arrays.stream(数组) Stream.of(数组)
常见方法:
中间方法: 特点:所有的中间方法,调用完后,都会返回一个新的Stream流对象,可以进行链式编程
终结方法: 特点:调用完后,不会返回Stream流对象,无法进行链式编程
作用:
代表文件或文件夹的类,提供操作文件、文件夹的方法
创建对象:
//public File(String pathname) 根据文件路径创建文件对象 //public File(String parent, String child) 根据父路径和子路径名字创建文件对象 //public File(File parent, String child) 根据父路径对应文件对象和子路径名字创建文件对象
常见方法:
// 2、public boolean exists():判断当前文件对象,对应的文件路径是否存在,存在返回true. // 3、public boolean isFile() : 判断当前文件对象指代的是否是文件,是文件返回true,反之。 // 4、public boolean isDirectory() : 判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之。 // 5.public String getName():获取文件的名称(包含后缀) // 6.public long length():获取文件的大小,返回字节个数 // 7.public long lastModified():获取文件的最后修改时间。 // 8.public String getPath():获取创建文件对象时,使用的路径 // 9.public String getAbsolutePath():获取绝对路径
// 1、public boolean createNewFile():创建一个新文件(文件内容为空),创建成功返回true,反之返回false。 // 2、public boolean mkdir():用于创建文件夹,注意:只能创建一级文件夹 // 3、public boolean mkdirs():用于创建文件夹,注意:可以创建多级文件夹 // 4、public boolean delete():删除文件,或者空文件夹,注意:不能删除非空文件夹。
//public File[] listFiles():(重点)获取当前目录下所有的"一级文件File对象"到一个文件对象数组中去返回(重点)
分类:
字节输入流:InputStream,FileInputStream 字节输出流:OutputStream,FileOutputStream 字符输入流:Reader,FileReader 字符输出流:Writer,FileWriter
作用:
从磁盘\网络中,将文件数据以字节形式读取到内存java程序中
创建对象:
new FileInputStream(String路径)
常见方法:
read():每次读取一个字节,返回该字节的数据,读到文件末尾返回-1 read(byte数组):每次读取一个字节数组,将读到的数据存到该数组中,返回本次读取到的字节个数,读到文件末尾返回-1
作用:
将内存java程序中的数据,以字节形式写入到磁盘\网络中
创建对象:
new FileOutputStream(String路径); new FileOutputStream(String路径, 布尔); //追加写入
常见方法:
write(一个字节) write(一个字节数组) write(一个字节数组的一部分, 起始索引, 写入个数)
作用:
从磁盘\网络中,将文件数据以字符形式读取到内存java程序中
创建对象:
new FileReader(String路径)
常见方法:
read():每次读取一个字符,返回该字符的数据,读到文件末尾返回-1 read(char数组):每次读取一个字符数组,将读到的数据存到该数组中,返回本次读取到的字符个数,读到文件末尾返回-1
作用:
将内存java程序中的数据,以字符形式写入到磁盘\网络中
创建对象:
new FileWriter(String路径); new FileWriter(String路径, 布尔); //追加写入
常见方法:
write(一个字符) write(一个字符数组) write(一个字符数组的一部分, 起始索引, 写入个数) write(一个字符串) write(一个字符串的一部分,起始索引, 写入个数)
作用:
对基本流进行包装,提高读写效率,底层默认有8k大小的缓冲区,提高读写速度
分类:
字节缓冲输入流:
对象创建: new BufferedInputStream(普通字节输入流); 常见方法: read();读一个字节 read(byte[]);读一个字节数组
字节缓冲输出流:
对象创建: new BufferedOutputStream(普通字节输出流); 常见方法: write(int);写一个字节 write(byte[]);写一个字节数组 write(byte[],起始索引, 字节个数);写一个字节数组的一部分
字符缓冲输入流:
对象创建: new BufferedReader(普通字符输入流); 常见方法: read();读一个字符 read(char[]);读一个字符数组 特有方法: readLine();读取文本数据一行,返回String,如果读取到文件末尾,返回null
字符缓冲输出流:
对象创建: new BufferedWriter(普通字符输出流); 常见方法: write(int);写一个字符 write(char[]);写一个字符数组 write(char[],起始索引, 字符个数);写一个字符数组的一部分 write(String);写一个字符串 write(String , 起始索引,字符个数);写一个字符串的一部分 特有方法: newLine(); 写入一个换行符
作用:
解决读写时字符乱码问题,指定字符集读、指定字符集写
分类:
字符转换输入流:
创建对象: new InputStreamReader(普通字节输入流, 指定读的字符集) 常见方法: 所有方法来自于字符输入流
字符转换输出流:
创建对象: new OutputStreamWriter(普通字节输出流,指定写的字符集) 常见方法: 所有方法来自于字符输出流
作用:
更为方便高效的写入数据
分类:
字节打印流:
创建对象: new PrintStream(普通字节输出流,是否自动刷新,指定字符集) 常见方法: 所有方法来自于字节输出流 特有方法: println(任意类型数据)
字符打印流:
创建对象: new PrintWriter(普通字节输出流,是否自动刷新,指定字符集Charset.forName("字符集")) 常见方法: 所有方法来自于字符输出流 特有方法: println(任意类型数据)
作用:
将数据和其数据类型一块读写文件
分类:
字节数据输入流:
创建对象: new DataInputStream(普通字节输入流) 常见方法: 所有方法来自于字节输入流 特有方法: read数据类型();四类八种,String是UTF
字节数据输出流:
创建对象: new DataOutputStream(普通字节输出流) 常见方法: 所有方法来自于字节输出流 特有方法: write数据类型(传参);
作用:
将java对象读写到文件中,读:反序列化 写:序列化
分类:
字节序列化流:
创建对象: new ObjectOutputStream(普通字节输出流) 常见方法: 所有方法来自于字节输出流 特有方法: writeObject(任意对象)
字节反序列化流:
创建对象: new ObjectinputStream(普通字节输入流) 常见方法: 所有方法来自于字节输入流 特有方法: (任意对象)readObject()
注意事项:
1.序列化流时,该对象的类必须实现序列化接口Serializable 2.如果想避免某个成员变量被序列化,可以使用transient关键字修饰该成员变量
作用:
代表线程类,里面提供操作线程的方法
创建对象:
new Thread(String 线程名) new Thread(Runnable 任务对象) new Thread(Runnable 任务对象,String 线程名)
常见方法:
run() 该线程开启后执行的任务代码 start()开启线程 setName(String) 给线程设置名字 getName()获取线程名字 static currentThread() 获取当前执行的线程对象 static sleep(毫秒值) 让当前线程睡眠多少毫秒 join() 让当前线程先执行完毕
作用:
可以复用线程,提高性能
创建对象(重点):
new ThreadPoolExcutor(七个参数) 核心线程数 最大线程数 临时线程存活时间 时间单位 任务队列 线程工厂 拒绝策略
常见方法:
excutor(Runnable任务) Future = submit(Callable任务) shutdown()等任务执行完后关闭线程池 shutdownNow()直接关闭线程池,返回未执行的任务
作用:
代表IP地址类,提供针对于ip的操作
创建对象:
//public static InetAddress getLocalHost() 获取本机IP,会以一个inetAddress的对象返回 //public static InetAddress getByName (String host) 根据ip地址或者域名,返回一个inetAdress对象
常见方法
//public String getHostName() 获取该ip地址对象对应的主机名 //public String getHostAddress() 获取该ip地址对象中的ip地址信息 //public boolean isReachable(int timeout) 在指定毫秒内,判断主机与该ip对应的主机是否能连通