System类
之前使用的系统输出就是System类中的方法,而后在System类里面也定义有一些其他的处理方法;
范例:操作耗时的统计
public class Test {
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis() ;
Runtime run = Runtime.getRuntime() ; // 获取实例化对象
String str = "" ;
for (int x = 0 ; x < 30000; x ++) {
str += x ; // 产生大量的垃圾空间
}
long end = System.currentTimeMillis() ;
System.out.println("操作耗时:" + (end - start));
}
}
//操作耗时:756
Cleaner类
Calender是在JDK1.9之后才提供的一个对象清理操作,其主要功能是进行finialize()方法的替代。在C++语言里面有两种特殊的函数:构造函数,析构函数(对象手工回收),在Java里面的垃圾空间都是通过GC自动回收的,所以很多情况下是不需要使用这类析构函数,所以Java并没有提供这方面的支持。
观察传统回收:
class Member {
public Member() {
System.out.println("【构造】在一个雷电交加的日子里面,林强诞生了。");
}
@Override
protected void finalize() throws Throwable {
System.out.println("【回收】最终你一定要死的。");
throw new Exception("我还要再活500年...") ;
}
}
public class Test {
public static void main(String[] args) throws Exception {
Member mem = new Member() ; // 诞生
mem = null ; // 成为垃圾
System.gc();
System.out.println("太阳照常升起,地球照样转动。");
}
}
【构造】在一个雷电交加的日子里面,林强诞生了。
太阳照常升起,地球照样转动。
【回收】最终你一定要死的。
import java.lang.ref.Cleaner;
class Member implements Runnable {
public Member() {
System.out.println("【构造】在一个雷电交加的日子里面,林强诞生了。");
}
@Override
public void run() { // 执行清除的时候执行的是此操作
System.out.println("【回收】最终你一定要死的。");
}
}
class MemberCleaning implements AutoCloseable { // 实现清除的处理
private static final Cleaner cleaner = Cleaner.create() ; // 创建一个清除处理
private Member member ;
private Cleaner.Cleanable cleanable ;
public MemberCleaning() {
this.member = new Member() ; // 创建新对象
this.cleanable = this.cleaner.register(this, this.member) ; // 注册使用的对象
}
@Override
public void close() throws Exception {
this.cleanable.clean(); // 启动多线程
}
}
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
try (MemberCleaning mc = new MemberCleaning()){
// 中间可以执行一些相关的代码
} catch (Exception e) {}
}
}
public class Test {
public static void main(String[] args) throws Exception {
System.out.println(get());
}
public static int get() {
try {
return 100 ;
} finally {
System.out.println("****************");
}
}
}
//运行结果
****************
100
对象克隆
所谓的对象克隆指的是就是对象的复制,而且属于全新的复制。即:使用已有对象内容创建一个新的对象,如果要想进行对象克隆需要用到Object类中的clone()方法:
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
Member memberA = new Member("林强",30) ;
Member memberB = (Member) memberA.clone() ;
System.out.println(memberA);
System.out.println(memberB);
}
}
class Member implements Cloneable {
private String name ;
private int age ;
public Member(String name,int age) {
this.name = name ;
this.age = age ;
}
@Override
public String toString() {
return "【" + super.toString() + "】name = " + this.name + "、age = " + this.age ;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone(); // 调用父类中提供的clone()方法
}
}