Java基础知识点总结--从细节再看Java(三)Java中的常用类System

在写Java代码的时候,我们最常用的一句就是System.out.println()。那么System类中还有什么其他常用的方法吗?

答案肯定是有的,不过再看方法前,我们先来看一下System本身:

java.lang

类 System


  •  
    public final class System
    extends Object

    The System class contains several useful class fields and methods. It cannot be instantiated.

public final class System {
    
     private System() {
    }

}

通过API和取出的这部分代码,我们不难有几点发现:

1. System在java.lang中,这也就意味着System可以不用导包就能直接使用。

2.System是继承自Object类的final 类,即System不能被继承。

3.System的构造方法设置为private,因此"It cannot be instantiated"他不能被实例化。即所有System的方法都要通过System类来调用。

然后再来看看它包含的几个方法。

1. static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

灵活的复制数组,从src源数组中下标srcPos处开始复制长度为length子序列,放到下标从destPos开始的dest目标数组中。

Object src:源数组

int srcPos:源数组开始索引下标

Object dest:目标数组

int destPos:目标数组开始索引下标

int length:指定接受的元素个数

private static void method1() {
		char []src={'a','b','c','d','e'};
		char []dest=new char[5];
		System.arraycopy(src, 0, dest, 0, 5);
		for(char i:dest)
			System.out.print(i+" ");
//output:a b c d e		
		
		System.arraycopy(src, 2, dest, 3, 2);
		for(char i:dest)
			System.out.print(i+" ");
//output:a b c c d 
	}

 

2. static long currentTimeMillis()   

 返回1970年1月1日 00:00:00 到现在时间的毫秒数 ,1s=1000ms

例如,1970年1月1日 00:00:01  返回1000

           1970年1月1日 00:01:00  返回1000*60

           1970年1月1日 01:00:00  返回1000*60*60

通常用于计算程序的运算时间,看代码:

private static void method2() {
		long start = System.currentTimeMillis();
		
		for (int i = 0; i < 100000; i++) {
			System.out.println(i);
		}
		
		long end = System.currentTimeMillis();
		
		System.out.println(end - start);
	}

3. static void exit(int status) 

根据状态吗status结束Java虚拟机,一般非0表示异常终止。

private static void method3() {
		for (int i = 0; i < 1000; i++) {
			System.out.println(i);
			if (i == 100)
				System.exit(0);
		}
	}

4. static void gc()  

Java一般是自动调用垃圾回收器,当然我们也可以手动调用,调用的方式就是通过System.gc()。System.gc()会尽最大努力回收垃圾,不一定会成功。

Object类中有一个finalize()方法,可以在类中对它进行覆写,当该类的对象被垃圾回收器回收或调用gc()回收之后会调用该方法。

class Person {
	@Override
	protected void finalize() throws Throwable {
		System.out.println("回收已执行");
	}
}

public class SystemDemo{
    public static void main(String[] args) {

		new Person();
		System.gc();
	}

程序运行时,不一定每次都能回收Person对象,因此不是每次都有输出的。

 

猜你喜欢

转载自blog.csdn.net/skisqibao/article/details/81181824