前言
该文章为Java基础自学笔记 其他内容:Java基础学习笔记目录 学习用书: 《Java核心技术 卷Ⅰ 基础知识(第10版)》 《Java经典编程300例》
第二十三章 常用API
23.1 Object类
23.1.1 Object类的作用
一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类 Object类的方法是一切子类都可以直接使用
23.1.2 Object类的toString方法
方法名 说明 public String toSting () 默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址
问题引出
开发中直接输出对象,默认输出对象的地址其实是毫无意义的 开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息 toString存在的意义
父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息 IDEA自动生成的toString()方法
@Override
public String toString ( ) {
return "Student{" +
"name='" + name +
", sex=" + sex +
", age=" + age +
'}' ;
}
23.1.3 Object类的equals方法
方法名 说明 public boolean equals (Object o) 默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false
问题思考
直接比较两个对象的地址是否相同,完全可以用 “==” 替代equals equals存在的意义
父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则 IDEA自动生成的equals()方法
@Override
public boolean equals ( Object o) {
if ( this == o) return true ;
if ( o == null || getClass ( ) != o. getClass ( ) ) return false ;
Student student= ( student) o;
return sex == student. sex &&
age == student. age &&
Objects . equals ( name, student. name) ;
}
23.2 Objects类
23.2.1 Objects概述
Objects类与Object类还是继承关系,Objects类是从JDK1.7开始之后才有的
23.2.2 Objects的常见方法
方法名 说明 public static boolean equals (Object a, Object b) 比较两个对象,底层会先进行非空判断,从而可以避免空指针异常,再进行equals比较 public static boolean isNull (Object obj) 判断变量是否为null,null返回true
Objects.equals(Object a, Object b)源码 (Objects的equals方法比较的结果是一样的,但是更安全)
public static boolean equals ( Object a, Object b) {
return ( a == b) || ( a != null && a. equals ( b) ) ;
}
Objects.isNull(Object obj)源码
public static boolean isNull ( Object obj) {
return obj == null ;
}
23.3 StringBuilder类
23.3.1 StringBuilder概述
StringBuilder是一个可变的字符串类,可以把它看成是一个对象容器 作用: 提高字符串的操作效率,如拼接、修改等
23.3.2 StringBuilder构造器
名称 说明 public StringBuilder() 创建一个空白可变的字符串对象,不包含任何内容 public StringBuilder(String str) 创建一个指定字符串内容的可变字符串对象
23.3.3 StringBuilder常用方法
方法名称 说明 public StringBuilder append(任意类型) 添加数据并返回StringBuilder对象本身,支持链式编程 public StringBuilder reverse() 将对象的内容反转 public int length() 返回对象内容长度 public String toString() 通过toString()就可以实现把StringBuilder转换为String
23.3.4 String类拼接字符串原理
23.3.5 StringBuilder提高效率原理
【StringBuilder案例】打印整型数组内容
需求:
设计一个方法用于输出任意整型数组的内容,要求输出如下格式:“该数组内容为:[11, 22, 33, 44, 55]” 分析:
定义一个方法,要求该方法能够接收数组,并输出数组内容 定义一个静态初始化的数组,调用该方法,并传入该数组
public static String toString ( int [ ] arr) {
if ( arr != null ) {
StringBuilder sb = new StringBuilder ( "[" ) ;
for ( int i = 0 ; i < arr. length; i++ ) {
sb. append ( arr[ i] ) . append ( i == arr. length - 1 ? "" : ", " ) ;
}
sb. append ( "]" ) ;
return sb. toString ( ) ;
} else {
return null ;
}
}
public static void main ( String [ ] args) {
int [ ] arr1 = { } ;
int [ ] arr2 = { 11 , 22 , 33 , 44 , 55 } ;
System . out. println ( toString ( arr1) ) ;
System . out. println ( toString ( arr2) ) ;
}
[ ]
[ 11 , 22 , 33 , 44 , 55 ]
23.4 Math类
包含执行基本数字运算的方法,Math类没有提供公开的构造器
23.4.1 Math类的常用方法
方法名 说明 public static int abs(int a) 获取参数绝对值 public static double ceil(double a) 向上取整 public static double floor(double a) 向下取整 public static int round(float a) 四舍五入 public static int max(int a, int b) 获取两个int值中的较大值 public static double pow(double a, double b) 返回a的b次幂的值 public static double random() 返回值为double的随机值,范围[0.0,1.0)
Math . abs ( 10 ) ;
Math . abs ( - 10.3 ) ;
Math . ceil ( 4.0000001 ) ;
Math . ceil ( 4.0 ) ;
Math . floor ( 4.9999999 ) ;
Math . floor ( 4.0 ) ;
Math . pow ( 2 , 3 ) ;
Math . round ( 4.49999 ) ;
Math . round ( 4.500001 ) ;
Math . random ( ) ;
( int ) ( Math . random ( ) * 7 ) + 3 ;
23.5 System类
System的功能是通用的,直接用类名调用,所以System不能被实例化
23.5.1 System类的常用方法
方法名 说明 public static void exit(int status) 终止当前运行的Java虚拟机,非零表示异常终止 public static long currentTimeMillis() 返回当前系统的时间毫秒值形式 public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) 数组拷贝
时间毫秒值
计算机认为时间是有起点的,起始时间:1970年1月1日 00:00:00(算C语言的生日) 时间毫秒值:指的是从1970年1月1日00:00:00走到此刻的总的毫秒数(1s=1000ms)
1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发了Unix的一个版本。随后,汤普逊和同时丹尼斯里奇改进了B语言,开发出了C语言,重写了Unix
long startTime = System . currentTimeMillis ( ) ;
. . .
long endTime = System . currentTimeMillis ( ) ;
System . out. println ( ( endTime - startTime) / 1000.0 + "s" ) ;
23.6 BigDecimal类
23.6.1 BigDecimal类使用步骤
public static BigDecimal valueOf ( double val) :包装浮点数成为BigDecimal 对象
23.6.2 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对象,精确几位,舍入模式) 除法
23.6.3 ArithmeticException异常
如果算数运算时出现无限小数时,使用BigDecimal类会报异常
BigDecimal a = BigDecimal . valueOf ( 10.0 ) ;
BigDecimal b = BigDecimal . valueOf ( 3.0 ) ;
BigDecimal c = a. divide ( b) ;
BigDecimal c1 = a. divide ( b, 2 , RoundingMode . HALF_UP) ;
23.6.4 RoundingMode参数
参数 说明 RoundingMode.CEILING 取右边最近的整数 RoundingMode.DOWN 去掉小数部分取整,也就是正数取左边,负数取右边,相当于向原点靠近的方向取整 RoundingMode.FLOOR 取左边最近的正数 RoundingMode.HALF_DOWN 五舍六入,负数先取绝对值再五舍六入再负数 RoundingMode.HALF_UP 四舍五入,负数原理同上 RoundingMode.HALF_EVEN 这个比较绕,整数位若是奇数则四舍五入,若是偶数则五舍六入
23.7 Date类