Java基础(四十五)-常用类库

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()方法
	}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35649064/article/details/83963139
今日推荐