文章目录
- 前言
- 一、Math(工具类)
- 1 属性
- 2 常见方法
- 二、System(工具类,和系统相关的)
- 1 public static void exit(int status) --- 终止当前运行的 Java 虚拟机。
- 2 public static long currentTimeMillis() --- 以毫秒为单位返回当前unix时间。
- 3 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) --- 拷贝数组(对引用数据类型是浅拷贝(拷贝引用))
- 4 System.out.println(参数) : 获取打印的对象
- 三、Runtime(和当前虚拟机运行环境相关的一个类)
- 1 基本方法
- 2 public Process exec(String command)--- 执行括号内的cmd命令 方法开发恶搞基友软件练习
- 四、Object(重要!!!)和Objects类
- 1 Object类 --- java.lang.Object
- (1)public String toString() :返回对象的字符串表示形式(对象地址)
- 直接使用
- 高级重写toString使用
- (2)public boolean equals(Object obj) :(比较两个对象是否相等) --- 没有重写默认是==(比较地址)
- 直接使用(比较地址,和==一样)
- 高级用法,重写比较值
- (3)public protected Object clone() :创建并返回此对象的副本(默认是浅拷贝)。
- 2 Objects类: 一个工具类(提供了一些判断null的方法)
- (1)public static boolean equals(Object a, Object b):先做非空判断,再比较两个对象
- (2)public static boolean isNull(Object obj) :判断对象是否是 null,则返回 true,否则返回 false。
- 五、浅克隆和深克隆(重要!!)
- 1 浅克隆和深克隆基本知识(内存逻辑)
- 2 使用第三方jar包的克隆 api 接口
- (1)手动添加 gson
- (2)使用 gson 实现深克隆
- 六、BigInteger(大整数)和BigDecimal(大小数)
- 1 BigInteger(大整数)
- (1)创建大整数BigInteger的方法
- (2)大整数BigInteger的运算
- (3)BigInteger的底层原理(扩展)
- 2 BigDecimal(大小数)
前言
需要注意,这些常用API的方法属性千万不要背,背是背不完的,用到再去查阅帮助文档就是了。我在这里写这个系列博客也是为了形成一个私人的文档查询库。
一、Math(工具类)
Math是java.lang.Math包下的一个静态工具类,由于是静态的,我们只需要类名调用即可。
1 属性
该类下面有两个字段属性
2 常见方法
主要介绍几个常见的方法,需要其他具体的方法,查阅帮助文档即可。
方法名 | 说明 | |
---|---|---|
piblic static int | abs(int a) | 获取参数的绝对值 |
piblic static double | ceil(double a) | 向上取整 |
piblic static double | floor(double a) | 向下取整 |
piblic static int | round(float a) | 四舍五入 |
piblic static int | max(int a, int b) | 获取两个int值中的较大值 |
piblic static double | pow(double a,double b) | 返回 a b a^b ab的值 |
piblic static double | random() | 返回值为double的随机值,范围为[0.0, 1.0) |
piblic static double | sqrt(double a) | 返回 double 值的正确四舍五入的正平方根 |
其实上述方法都还有各自的重载方法,所以你记肯定是不好记的,我们要学会查阅帮助文档。
double pi = Math.PI;
System.out.println("PI = " + pi); // PI = 3.141592653589793int a = 4;
System.out.println(Math.sqrt(a)); // 2.0 ,自动隐藏转换为double类型
二、System(工具类,和系统相关的)
System也是一个工具类,提供了一些与系统相关的方法,这里我们主要介绍三个
1 public static void exit(int status) — 终止当前运行的 Java 虚拟机。
- int status:状态码
(1)0 : 表示当前虚拟机正常停止
(2)非0(一般1即可):表示当前虚拟机异常停止
public class Test {public static void main(String[] args) {System.exit(0);System.out.println("hello"); // 这行代码不会被执行}
}
2 public static long currentTimeMillis() — 以毫秒为单位返回当前unix时间。
-
问题:什么叫做unix时间?
(1)由1970年1月1日 00:00:00 到当前时间一共经过了多少毫秒,这就是unix时间。
(2)由于北京时间与国际时间晚8小时,因此国内是从1970年1月1日 08:00:00开始算 -
毫秒又是什么,为什么是 1970年1月1日 00:00:00 这个时间?
这个时间称为计算机中的时间原点,这里有一个小故事。
没错,就是C语言诞生的时间,C语言可是一门伟大的语言。 -
应用:通常可以用来统计程序的运行时间
public class Test {public static void main(String[] args) {long start = System.currentTimeMillis();System.out.println(start); // 1723818371814int sum = 0;for(int i = 0; i < 10000000; i++) {sum += i;}long end = System.currentTimeMillis();System.out.println(end); // 1723818371819System.out.println(end-start); // 5毫秒 ,这个时间是不固定的}
}
3 public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) — 拷贝数组(对引用数据类型是浅拷贝(拷贝引用))
- public static void arraycopy(数据源数组, 源数组起始索引, 目标数组, 目标数组起始索引, 拷贝个数)
将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。
【注】:
- 对于基本数据类型:拷贝的是值,互不影响
- 对于引用数据类型:浅拷贝,拷贝的是引用
package cn.hjblogs.demo;public class Test {public static void main(String[] args) {int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int[] arr2 = new int[10];System.arraycopy(arr1, 0, arr2, 0, arr1.length);// 验证for (int i = 0; i < arr2.length; i++) {System.out.print(arr2[i]+" "); // 1 2 3 4 5 6 7 8 9 10}System.out.println(); // 换行int[] arr3 = new int[10];System.arraycopy(arr1, 3, arr3, 0, 5);// 验证for (int i = 0; i < arr3.length; i++) {System.out.print(arr3[i]+" "); // 4 5 6 7 8 6 7 8 9 10}}
}
关于这个方法还有几个注意事项:
- 1 如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
- 2 在拷贝的时候需要考虑数组的长度,如果超出范围也会报错
- 2 如果数据源数组和目的地数组都是引用数据类型,那么子类型可以可以拷贝到父类型(隐式转换),不过拿出来的时候需要进行一步强转就可以了。---- 多态哪里的父类(大范围)与子类(小范围)的隐式转换和强转
// 减少展示长度,Student,Person类就不展示了public class Test {public static void main(String[] args) {Student s1 = new Student("张三", 18);Student s2 = new Student("李四", 20);Student s3 = new Student("王五", 22);Student[] arr1 = {s1, s2, s3};Person[] arr2 = new Person[3];System.arraycopy(arr1, 0, arr2, 0, 3);// 遍历arr2数组for (Person p : arr2) {Student s = (Student) p; // 强制类型转换 父类转子类System.out.println(p.getName()); // 张三 李四 王五}}
}
4 System.out.println(参数) : 获取打印的对象
细节:System.out.println(参数)
- System: 类名
- out: 静态成员变量
- System.out: 获取打印的对象
- println: 打印方法
- 参数:表示打印的内容
- 结合后面的 Object的toString方法会更加深入理解这行代码
package cn.hjblogs.demo;public class Test {public static void main(String