我们从学习JAVA,不管是写什么代码,我们都会写到这样的语句:System.out.println();我们知道这是向控制台输出的语句,但是一直我们都没有认真的去思考过,为什么这么写呢。其实,这里也是类中的方法,而最主要的,就是System类。
System类
第一步,打开API搜索System
第二步,查看内容:
我们发现,这三个属性都是静态的,而且我们最常用的out的返回值是一个PrintStream类的对象,我们观察System.out.println(); 可以看出来,System.out就代表着一个PrintStream类的对象,然后我们点进PrintStream:
我们可以发现,System.out.println()就是System.out.对应的一个对象,然后调用了print或者println方法,把内容打印到了控制台。
还有一个err。属性。这个是error的缩写,是打印错误报告的。当我们出现异常或者错误时,控制台那些红色的字就是调用这个方法打印出来的。代码示例:
public class SS {
public static void main(String[] args) {
System.err.println("代码出错,请检查");
}
}
结果输出:
另外一个in属性,等到后面介绍IO流的时候再具体介绍。
成员方法:
因为还要很多方法不常用而且现在接触不到,就先介绍这几个方法。
①currentTimeMillis()方法,返回当前时间。
public class SS {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
}
}
输出结果:
1573478673457
常用来计算程序开始时间和程序结束时间:
public class SS {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
int sum = 0;
for(int i = 0;i<1000000;i++)
sum+=i;
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
}
}
输出结果:
3
②gc方法,运行垃圾回收器。
在我们的JVM虚拟机里,有着专门的垃圾回收器进行垃圾回收,但是大部分时间不是这个对象一不用就被回收了,为了程序的有足够的空间,我们可以自己调用垃圾回收器进行垃圾回收。
代码示例:
public class SS {
public static void main(String[] args) {
test_gc();
}
public static void test_gc() {
for(int i =0 ;i<400;i++) {
new Demo();
//System.gc();
}
}
}
class Demo{
@Override
protected void finalize() throws Throwable {
System.out.println("我被回收了");
}
}
当我们把System.gc()注释掉的时候,我们点击运行,控制台一闪而过,什么也没有输出。
解除注释后:
③exit()方法,这个方法过于凶猛,直接把后台JVM给关闭了,所以只介绍一下,慎重操作。