前言第二十三章 常用API
23.1 Object类
23.1.1 Object类的作用23.1.2 Object类的toString方法23.1.3 Object类的equals方法 23.2 Objects类
23.2.1 Objects概述23.2.2 Objects的常见方法 23.3 StringBuilder类
23.3.1 StringBuilder概述23.3.2 StringBuilder构造器23.3.3 StringBuilder常用方法23.3.4 String类拼接字符串原理23.3.5 StringBuilder提高效率原理 【StringBuilder案例】打印整型数组内容23.4 Math类
23.4.1 Math类的常用方法 23.5 System类
23.5.1 System类的常用方法时间毫秒值 23.6 BigDecimal类
23.6.1 BigDecimal类使用步骤23.6.2 BigDecimal类常用方法23.6.3 ArithmeticException异常23.6.4 RoundingMode参数 23.7 Date类
前言该文章为Java基础自学笔记其他内容:Java基础学习笔记目录学习用书:
《Java核心技术 卷Ⅰ 基础知识(第10版)》
《Java经典编程300例》
第二十三章 常用API
23.1 Object类
23.1.1 Object类的作用
一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类Object类的方法是一切子类都可以直接使用 23.1.2 Object类的toString方法
问题引出
开发中直接输出对象,默认输出对象的地址其实是毫无意义的开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息 toString存在的意义
父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息 IDEA自动生成的toString()方法
@Override public String toString() { return "Student{" + "name='" + name + ", sex=" + sex + ", age=" + age + '}'; }23.1.3 Object类的equals方法
问题思考
直接比较两个对象的地址是否相同,完全可以用 “==” 替代equals equals存在的意义
父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则 IDEA自动生成的equals()方法
@Override public boolean equals(Object o) { // 判断是不是同一个对象比较,如果是返回true if (this == o) return true; // 如果o是nullfalse,如果o不是学生类型返回false if (o == null || getClass() != o.getClass()) return false; // 说明o一定是学生类型而且不为null 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的常见方法
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构造器
需求:
设计一个方法用于输出任意整型数组的内容,要求输出如下格式:“该数组内容为:[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类的常用方法
// 取绝对值:返回正数 Math.abs(10); // 10 Math.abs(-10.3); // 10.3 // 向上取整 Math.ceil(4.0000001); // 5.0 Math.ceil(4.0); // 4.0 // 向下取整 Math.floor(4.9999999); // 4.0 Math.floor(4.0); // 4.0 // 求指数次方 Math.pow(2, 3); // 2^3 = 8.0 // 四舍五入 Math.round(4.49999); // 4 Math.round(4.500001); // 5 // 随机数 0.0 - 1.0(包前不包后) Math.random(); // 拓展:3 - 9 之间的随机数 (0 - 6) + 3 (int)(Math.random() * 7) + 3;23.5 System类
System的功能是通用的,直接用类名调用,所以System不能被实例化 23.5.1 System类的常用方法
计算机认为时间是有起点的,起始时间: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类使用步骤
创建对象BigDecimal封装浮点型数据
public static BigDecimal valueOf(double val):包装浮点数成为BigDecimal对象23.6.2 BigDecimal类常用方法
如果算数运算时出现无限小数时,使用BigDecimal类会报异常
BigDecimal a = BigDecimal.valueOf(10.0); BigDecimal b = BigDecimal.valueOf(3.0); BigDecimal c = a.divide(b); // 报异常java.lang.ArithmeticException BigDecimal c1 = a.divide(b, 2, RoundingMode.HALF_UP); // 3.33(保留小数点后两位)23.6.4 RoundingMode参数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)