API (1)
首先建议学API没必要全部背下来, 我自己也背不下来全部的API, 所以, 第一个是英文要多练习, 特别是API常见的英文, 因为第一, 很多都是通用的, 比如你背会一个方法, 那就相当于背会了很多个API共用的方法. 第二个是多查API文档, 官方是英文版的, 不好理解, 可以下载一个中文版的API文档. 按需查询, 哪里不会点哪里
1 包装类
1.1 作用
把基本数据类型转化为对应的包装类型, 这样就可以在集合的泛型中使用
主要就是8个基本数据类型: Byte, Short, Character, Integer, Long, Float, Double, Boolean
1.2 装箱和拆箱
1.2.1 装箱
装箱: 把基本数据类型转换为包装类型
拆箱: 把包装类型转化为基本数据类型
//输出基本数据类型 (包装类<=>基本数据类)
// 装箱
Integer e = 999;
// 拆箱
int d = e;
2 String的处理API
2.1 StringBuilder和StringBuffer
2.1.1 作用
这两者作用都主要用于频繁的对字符串的操作 (例如拼接、修改), 效率更高
2.1.2 区别
StringBuilder和StringBuffer的区别在于, 前者处理效率高, 但是线程共享导致不安全. 后者处理效率低, 但是由于单独占有一个线程, 所以数据安全.
2.1.3 常用方法
- 内容拼接: append(任意类型)
- 获取内容长度: int length()
- 内容反转: reverse()
- 转化为String: toString()
2.2 StringJoiner
2.2.1 作用
用于频繁对字符串的拼接,并且按照某一种格式进行拼接
2.2.2 比StringBuilder/Buffer的优势
为拼接而生, 构造时如果设计好了 连接符, 首项和尾项, 可以自动拼入
例如:
public static String arraytoStr(int[] arr){
StringJoiner sj = new StringJoiner(", ","[","]");
for (int i = 0; i < arr.length; i++) {
sj.add(arr[i]+"");
}
return sj.toString();
}
2.2.3 常用方法
拼接内容: add(String )
获取内容的长度: int length();
把内容转化为字符串: String toString();
3 Math
3.1 作用
Math译为数学, 是一个用于操作数字运算的工具类, 里面都是静态方法, 所以用类名.方法名调用.
3.2 常用方法
- 获取数字的绝对值: static double abs(double a)
- 向上取整: static double ceil(double a)
- 向下取整: static double floor(double a)
- 四舍五入: static long round(double a)
- 获取较大值: static double max(double a , double b)
- 获取n次方: static double pow(double a, double b )
- 获取随机数: static double random()
4 BigDecimal
4.1 作用
为了解决小数进行运算数, 由于进制转换的问题, 会出现失真的问题
4.2 构造器
这里讲构造器的原因是因为, BigDecimal的构造器有坑, 导致依旧失真
BigDecimal (double value): 亲测, 不好用, 会失真.
BigDecimal (String str): 字符串内数据类型与子类对象一致, 不会失真
BigDecimal.valueOf(num): 这个是方法不是构造器, 可以用来将double数据类型转化为BigDecimal, 这样计算不会失真
4.3 常用方法
- 把小数转化为BigDecimal: 被我拿到构造器讲了....
- 加法: BigDecimal add(BigDecimal a);
- 减法: BigDecimal subtract(BigDecimal a);
- 乘法: BigDecimal multiply(BigDecimal a);
- 除法: BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式)
- 把BigDecimal转化为小数double doubleValue()
5 LocalDate/LocalTime/LocalDateTime
5.1 LocalDate
5.1.1 作用
获取日期, 年月日
5.1.2 特点
对象不可以被改变, 修改完之后, 都要重新接收对象
5.1.3 常用方法
- 获取数据: getXxx
- 修改数据: withXxxx
- 添加数据: plusXxx
- 减少数据: minusXxx
- 时间比较: equals, isBefore, isAfter
5.2 LocalTime
5.2.1 作用
获取时间, 时分秒
5.2.2 特点
与LocalDate一样, 不过多阐述
5.2.3 常用方法
与LocalDate一样, 不过多阐述
5.3 LocalDateTime
5.3.1 作用
获取日期时间, 年月日, 时分秒
5.3.2 特点
与LocalDate一样, 不过多阐述
5.3.3 常用方法
LocalDate常用的方法LocalDateTime都支持, 而且, 它有另外三种常用方法
- 把LocalDateTime转换成LocalDate: (LocalDate) .toLocalDate()
- 把LocalDateTime转换成LocalTime: (LocalTime) .toLocalTime()
- 合并LocalDate和LocalTime: static LocalDateTime of(LocalDate date, LocalTime time)
6 ZoneID和ZonedDateTime (时区时间)
6.1 ZoneID
6.1.1 作用
获取时区的ID
6.1.2 获取对象的方法
- 获取系统默认的时区: static ZoneId systemDefault()
- 获取Java支持的全部时区Id: static Set getAvailableZoneIds()
- 把某个时区id封装成ZoneId对象: static ZoneId of(String zoneId)
6.2 ZonedDateTime
6.2.1 作用
获取带时区的日期信息, 年月日, 时分秒
6.2.2 特点
与LocalDate一样, 不过多阐述
6.2.3 常用方法
与LocalDate一样, 不过多阐述
7 Instant (时间戳)
7.1 作用
获取某一个瞬间,秒,毫秒,微秒,纳秒
7.2 常用方法
与LocalDate一样, 不过多阐述
获取时间时可以选getEporchSecond()或者getNano(), 分别指代获取总秒数和纳秒(不足一秒)
8 DateTimeFormatter
8.1 作用
把时间转化为指定格式的字符串,也可以把字符串转化为对应的时间
8.2 常用方法
- 格式化时间: public String format(时间对象)
8.3 LocalDateTime提供的格式化, 解析时间的方法
- 格式化时间: public String format(DateTimeFormatter formatter)
- 解析时间: public static LocalDateTime parse(String 时间字符串, DateTimeFormatter formatter)
9 Duration
9.1 作用
可以用于计算两个时间对象相差的天数、小时数、分数、秒数、纳秒数;支持LocalTime、LocalDateTime、Instant等时间。
9.2 常用方法
计算隔多少天,并返回: public long toDays()
计算隔多少小时,并返回: public long toHours()
计算隔多少分,并返回: public long toMinutes()
计算隔多少秒,并返回: public long toSeconds()
计算隔多少毫秒,并返回: public long toMillis()
计算隔多少纳秒,并返回: public long toNanos()
PS: 源码都很简单, 就是需要对API文档多熟悉熟悉