目录
3. 面向对象高级 - 常用的API
3.1 Object 类
3.1.1 Object 类介绍
3.1.2 Object类的常用方法:
3.1.3 Objects 概述
3.2 Math 类
3.3 System 类
3.3.1 System 类概述
3.3.2 常用方法
3.4 BigDecimal 类
3.4.1 BigDecimal 类概述
3.4.2 BigDecimal 类使用
3.4.3 BigDecimal 类使用
3.5 包装类
3.5.1 包装类的介绍
3.5.2 包装类的好处
3.5.3 基本类型对应的包装类
3.5.4 以Integer包装类为例
3.5.5 Interger 常用方法
3.5.6 包装类面试题
3.5.7 今日学习目标
3. 面向对象高级 - 常用的API
什么是API?
- API(Application Programming interface) 应用程序编程接口。
- 简单来说:就是 Java 帮我们已经写好的一些类和方法,我们直接拿过来用就可以了
3.1 Object 类
3.1.1 Object 类介绍
- 所有的类,都直接或者间接的继承了 Object 类 (祖宗类)
- Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法。
3.1.2 Object类的常用方法:
public class ToStringDemo { /* public String toString() 返回该对象的字符串表示 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } getClass().getName() : 类名称, 全类名(包名 + 类名) Integer.toHexString() : 转十六进制 hashCode() : 返回的是对象内存地址 + 哈希算法, 算出来的整数 (哈希值) ------------------------------------------------------- 细节: 使用打印语句, 打印对象名的时候, println方法, 源码层面, 会自动调用该对象的toString方法. public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } */ public static void main(String[] args) { A a = new A(); System.out.println(a); System.out.println(a.toString()); Student stu = new Student("张三",23); System.out.println(stu); ArrayList<String> list = new ArrayList<>(); list.add("abc"); list.add("abc"); list.add("abc"); System.out.println(list); } } class A { @Override public String toString() { return "大哥重写了toString方法"; } }
结论: Object类中的equals方法, 默认比较的是对象内存地址 - 通常会重写equals方法, 让对象之间, 比较内容
3.1.3 Objects 概述
Objects类与 Object 还是继承关系,Objects类是从JDK 1.7开始之后才有的。
3.2 Math 类
包含执行基本数字运算的方法
3.3 System 类
3.3.1 System 类概述
- System的功能是静态的,都是直接用类名调用即可 ------ 工具类
3.3.2 常用方法
3.4 BigDecimal 类
3.4.1 BigDecimal 类概述
用于解决小数运算中, 出现的不精确问题
BigDecimal类 : 解决小数运算中, 出现的不精确问题
BigDecimal创建对象 :
public BigDecimal(double val) : 不推荐, 无法保证小数运算的精确
---------------------------------------------------------------
public BigDecimal(String val)
public static BigDecimal valueOf(double val)
BigDecimal常用成员方法 :
public BigDecimal add(BigDecimal b) : 加法
public BigDecimal subtract(BigDecimal b) : 减法
public BigDecimal multiply(BigDecimal b) : 乘法
public BigDecimal divide(BigDecimal b) : 除法
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式) : 除法
注意: 如果使用BigDecimal运算, 出现了除不尽的情况, 就会出现异常
3.4.2 BigDecimal 类使用
● 常用方法
3.4.3 BigDecimal 类使用
- divide 除法细节
3.5 包装类
3.5.1 包装类的介绍
将
基本数据类型
,
包装成
类
(
变成引用数据类型
)
3.5.2 包装类的好处
3.5.3 基本类型对应的包装类
将基本数据类型, 包装成类 (变成引用数据类型)
3.5.4 以Integer包装类为例
由于基本数据类型对应的包装类使用方式大同小异,以下以Interger包装类为例展开
包装类 : 将基本数据类型, 包装成类, 变成引用数据类型
----------------------------------------------------------------------------------
手动装箱: 调用方法, 手动将基本数据类型, 包装成类
1. public Integer(int value) : 通过构造方法 (不推荐)
2. public static Integer valueOf(int i) : 通过静态方法
手动拆箱: 调用方法, 手动将包装类, 拆成(转换)基本数据类型
1. public int intValue() : 以 int 类型返回该 Integer 的值
JDK5版本开始, 出现了自动拆装箱 :
3.5.5 Interger 常用方法
3.5.6 包装类面试题
public class InterView {
/*
看程序说结果, 并说明原因
自动装箱的时候, 如果装箱的数据范围, 是-128~127, ==号比较的结果就是true, 反之都是false
-----------------------------------------------------------------------------------
自动装箱的原理 : 自动帮我们调用了 Integer.valueOf(127);
// i = 127
public static Integer valueOf(int i) {
if (i >= -128 && i <= 127) {
return IntegerCache.cache[255];
}
return new Integer(i);
}
如果装箱的数据, 不在 -128 ~ 127 之间, 会重新创建新的对象
如果装箱的数据, 在 -128 ~ 127 之间, 不会创建新的对象, 而是从底层的数组中, 取出一个提前创建好的Integer对象, 返回
- Integer类中, 底层存在一个长度为256个大小的数组, Integer[] cache
在数组中, 存储了256个Integer对象, 分别是 -128 ~ 127
*/
public static void main(String[] args) {
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1 == i2); // true
Integer i3 = 129;
Integer i4 = 129;
System.out.println(i3 == i4); // false
Long i11 = 129L;
Long i22 = 129L;
System.out.println(i11 == i22);
System.out.println(i11.equals(i22));
}
}
3.5.7 今日学习目标