常用api(System,Runtime,Object)
System类
System是一个工具类,提供了一些与系统相关的方法。
计算机的时间原点
- 1970年1月1日 00:00:00
- 我们的位于东八区,实际上我们的时间原点会晚8个小时
- 1970年1月1日 08:00:00
方法一:返回系统时间
返回当前系统的时间毫秒值.可以利用这个方法来计算程序两处的时间差值,1秒=1000毫秒。1
2//返回当前系统的时间毫秒值
public static long currentTimeMillis();方法二:终止虚拟机
终止当前运行的Java虚拟机.1
2//status的值:0表示正常退出,非0表示程序异常终止。
public static void exit(int status);方法三:拷贝数组
拷贝数组.注意:1
2//括号里的参数:数据源数组,起始索引,目的数组,起始索引,拷贝个数
public static void arraycopy(); - 如果数组源数组和目的数组都是基本数据类型,那么两者的数据类型必须要保持一致,否则会报错。
- 在拷贝的时候需要考虑数组的长度,如果超出范围也会报错。
- 如果数据源数组和目的数组都是引用数据类型,那么子类类型可以赋值给父类类型(多态)。
Runtime类
Runtime表示当前虚拟机的运行环境
方法一:获取系统的运行环境对象
获取系统的运行环境对象1
2//获取系统的运行环境对象
public static Runtime getRuntime();
方法二:停止虚拟机
停止虚拟机1
2//status的值:0表示正常退出,非0表示程序异常终止。
public void exit(int status);
实际上System类中调用的exit方法就是这个方法,翻了一下源码:1
2
3public static void exit(int status) {
Runtime.getRuntime().exit(status);
}
方法三:获得CPU线程数
获得CPU线程数1
public int availableProcessors();
方法四:JVM能从系统中获取的总内存的大小
JVM能从系统中获取的总内存的大小(最大内存)单位byte1
public long maxMemory();
方法五:JVM能从系统中获取的总内存的大小
JVM能从系统中获取的总内存的大小(目前已用)单位byte1
public long totalMemory();
方法六:JVM剩余内存大小
JVM剩余内存大小(单位byte)1
public long freeMemory();
方法七:运行cmd命令
运行cmd命令1
public Process exec(String command);
Object类
Object是Java中的顶级父类。所有的类都直接或间接继承于Object类。
Object类中的方法可以被所有子类访问。
方法一:空参构造
空参构造1
public Object();
方法二:返回对象的字符串形式
返回对象的字符串形式1
public String toString();
tips:
- 当我们直接打印一个对象,翻看源码,其实是调用了toString()方法。打印的是对象的地址值。
- 如果我们想在直接打印对象的时候打印的是属性值,我们可以在对象的类中重写toString()方法。
- 如果我们想用equals()方法比较两个对象是否相等,实际上我们equals也是调用了toString()来比较,比的是地址值。
- 如果我们不想比较地址值,而是想比较两个对象里面的某某属性是否相等,在实际开发中,我们可以在对象的类里面重写toString()方法,让equals()实现比较两个对象的属性值。
方法六:比较两个对象是否相等
比较两个对象是否相等### 方法七:对象克隆 对象克隆1
public boolean equals(Object obj);
注意:1
protected Object clone(int a);
- clone()是一个protected的方法,不能够直接用其他对象调用(除非在lang包)
- 我们需要在要被克隆的对象的类中重写clone()方法才可以调用
- 然后用类实现Cloneable接口,该接口里没有抽象方法,是一个标记性接口,表示该接口已经被实现,则该类的对象能被克隆。
代码实现在Java中,存在浅克隆和深克隆:1
2
3
4
5
6public class Student implements Cloneable{
protected Object clone() throws CloneNotSupportedException {//抛出异常
return super.clone();
}
} - 浅克隆:不管对象内部属性是基本数据类型还是引用数据类型,都完全拷贝过来,记录其值。更改其中一个对象的数组内容,则另外一个也会跟着改变。
- 深克隆:基本数据类型直接拷贝过来,字符串直接服用串池,引用数据类型则会重新创建新的,并记录其地址值。更改其中一个对象的数组内容,则另外一个不会跟着改变。
- clone()是浅克隆,如果我们想深克隆,可以重写一个clone方法
- 但是实际开发中,我们一般引用第三方工具。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 欢迎来到阿叶Ayeez的博客!
评论














