文章目录
- 常用类库
-
- 一、常用类库
-
- 1、java.util.Objects
- 2、java.lang.Math
- 3、java.util.Arrays
- 4、java.math.BigDecimal
- 5、java.util.Date
- 6、java.text.DateFormat
- 7、java.util.Calendar
- 8、java.lang.System
- 二、泛型
-
- 1、概述
- 2、使用
- 三、String(非常重要)
- 总结
常用类库
- 学习方法
必须熟悉,长期记忆。大量测试一个类,记录并掌握其功能。
例如:X工具类,有X方法,方法有什么功能,需要传递X参数,能得到X结果。
一、常用类库
(基于JDK 11)
1、java.util.Objects
所有Java类的基类(顶级父类),所有类层次结构的根。JDK7版本添加,包含了很多静态方法。
-
equals:语法格式:Object.equals(a, b);
-
checkFromIndexSize:检查下标是否越界
-
hashCode:计算对象的哈希值
-
isNull:语法格式:Object.isNull(a);
其他的方法在API中查看,都需要整理
2、java.lang.Math
执行数字运算,API中也有大量方法。
-
Math.abs(-10);:-10的绝对值,结果为10
-
Math.min(100, 200):两数之间较小值,结果为100
-
Math.max(100, 200):两数之间较大值,结果为200
-
约等:
- Math.round(24.5):四舍五入,结果为25;Math.round(24.5),结果为-24
- Math.floor(3.5):返回小于等于参数的最大整数,结果为3.0;Math.floor(-3.5),结果为-4.0
- Math.ceil(3.5):返回大于等于参数的最大整数,结果为4.0;Math.ceil(-3.5),结果为-3.0
3、java.util.Arrays
可以对数组进行操作,运用较多,重点整理API中的方法。
- binarySearch:查找数组中某元素的下标
- compare:比较两个数组
- toString:打印数组,可以取代for循环遍历数组
- sort:对数组进行排序
- copyOf:将数组动态扩容
- arr = Array.copyOf(arr, 15);将arr扩容为长度15的数组
4、java.math.BigDecimal
double d1 = 0.1;
double d2 = 0.2;
-
结果:并不是0.3。
-
问题:在Java中如果使用double进行算术运算,运算结果会缺失精度。
java.math.BigDecimal的作用:算术运算专用,解决小数运算问题
使用方式:传递一个String参数
BigDecimal b1 = new BigDecimal("0.1");
BigDecimal b2 = new BigDecimal("0.1");
构造方法 | 说明 |
---|---|
public BigDecimal(String val) {} | 常用构造方法 |
常用方法 | 作用 |
---|---|
add | 加法运算 |
subtract | 减法运算 |
multiply | 乘法运算 |
divide | 除法运算 |
- API中BigDecimal有更多其他方法,建议仔细查看,并整理
5、java.util.Date
表示特定时刻,精度为毫秒。
PS:一天的毫秒数:24*60*60*1000
查看API,发现大部分方法已经过时,真正有用的是用它表示时刻的方法。
-
getTime()方法,返回一个long类型的值。
- 获取的是格林威治时间:1970年1月1日东八区早上8点整~现在的毫秒数。
- setTime()也可以用
- 有可能用到:对时间的比较
- after(Date when):测试此日期是否在指定日期之后。
- before(Date when):测试此日期是否在指定日期之前。
-
构造方法:没过时的两个
构造方法 概述 Date() 不传参数,表示当前时间(此时此刻) Date(long date) 传入一个毫秒数,表示从格林威治日到现在的时间,可以表示过去或未来的时间
new Date使用。
6、java.text.DateFormat
格式化日期。
字母 | 表示 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
-
format()方法
例:2020年12月12日 12:12 12
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm ss"); String text = format.format(new Date()); System.out.println(text);
运行结果:
-
parse()方法
将一段字符串转成Date
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm ss"); //parse:将yyyy-MM-dd HH:mm ss日期字符串,转为date对象 String text = format.format(new Date()); System.out.println(text); System.out.println(format.parse("2021-12-12 12:12 12"));
运行结果:
-
此处注意:太容易混淆了,format是返回的StringBuffer类型数据进行格式化日期。parse是传入字符串,返回的是一个Date对象。
7、java.util.Calendar
抽象类,存在getInstance方法,不通过new,直接获取即可。
其中提供了大量常量值,常用的有get和set。
- Calendar.YEAR:获取年份
- Calendar.DAY_OF_YEAR:获取一年中的第几天
Calendar c = Calendar.getInstance();
//取出日历中的数据
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_YEAR);
System.out.println(year);
System.out.println(day);
运行结果:
//将年设置为2021年
c.set(Calendar.YEAR,2021);
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_YEAR);
System.out.println(year);
System.out.println(day);
运行结果:
-
c.get(Calendar.WEEK_OF_YEAR); :获取现在是一年中的第几周
-
c.add(Calendar.YEAR,1);:给当前年份加1
- 需要注意的一点:
- 在日历中月份是从0-11的,0表示1月份,11表示12月份
- 星期国外将星期七当作一周的第一天,星期六是一周的最后一天。
- 需要注意的一点:
-
getActualMaxmun:获取某个字段的最大值
8、java.lang.System
-
System.out
-
System.in
-
System.gc
二、泛型
1、概述
泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定 义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
使用泛型可以:
- 提高代码复用率
- 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)
2、使用
- 泛型类
public class ClassName<T> {
private T data;
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
- 泛型接口
public interface IntercaceName<T> {
T getData();
}
实现接口时是否实现泛型:
- 指定类型
public class Interface1 implements IntercaceName<String> {
private String text;
@Override
public String getData() {
return text;
}
}
- 不指定类型
public class Interface1<T> implements IntercaceName<T> {
private T data;
@Override
public T getData() {
return data;
}
}
- 泛型方法
private static <T> T 方法名(T a, T b) { }
注意:
- 在编译之后程序会采取去泛型化的措施。也就是说Java中的泛型只在编译阶段有效,泛型信息不会进入到运行时阶段。
- 泛型限定和通配符
在使用泛型时,可以指定泛型的限定区域
-
例如:必须是某某类的子类或 某某接口的实现类,
格式:<T extends 类或接口1 & 接口2>
类型**通配符是使用?**代替方法具体的类型实参。
- 泛型上届限定使用:<? extends Parent> 指定了泛型类型的上届
- 泛型下届限定使用:<? super Child> 指定了泛型类型的下届
- 可以简单理解为Object,但是使用时有很大区别:<?> 指定了没有限制的泛型类型
三、String(非常重要)
Java程序中所有字符串文字都是String类的实例。
API 中查看!
后续补充。
总结
学习这些类库为我们提供了非常方便的工具,提高了编码效率,就是记忆起来比较花费时间,多多使用,多多熟悉。