本篇来了解下System这个类,这个类我们在前面至少两个地方用到过,一个是天天写输出语句的System.out.println(),还有一个是在使用Scanner类过程中,接收键盘录入对象的参数System.in。学习完这篇,就能了解System.in和System.out这大概的作用。
1.基本特点
打开JAVA API文档,搜索找到System类,可以了解下,System类是在lang包下,所以使用System不需要导入包。System类下所有的成员方法都是用static修饰,而且查看System类源码,找到构造方法,是用private修饰,所以System类不能用new创建,不能实例化一个类对象。在字段区域,可以看到,err表示标准错误输出流,in表示标准输入流,一般指键盘,out表示标准输出流,一般输出到控制台。所以,我们一直在输出的打印语句就是标准输出流的一个方法。
2.成员方法练习
1)gc()
这个方法是调用垃圾回收方法,Object类有一个finalize()方法,一般来说,系统决定什么时候到达了垃圾回收,才会调用finalize()方法去处理垃圾回收。如果程序员想自动处理垃圾回收,可以通过System.gc()方法去呼唤finalize()方法执行垃圾回收。关于这个方法,简单了解一下就可以。
2)exit(int status)
这个方法的作用是终止当前运行的JAVA虚拟机。参数status是一个int类型,0表示正常退出,非0表示异常退出java虚拟机。
package otherclass; public class Demo1_System { public static void main(String[] args) { System.out.println("Start"); System.exit(0); System.out.println("end"); } }
可以看到,只会输出Start,end没有,因为前面一行执行了退出JVM操作。
3)currentTimeMillis()
返回以毫秒为单位的当前时间,有时候我们拿到这个时间就可以转换成不同格式的时间,从而去做其他事情,例如日志输出,时间戳可能用的到。
package otherclass; public class Demo1_System { public static void main(String[] args) { intsum = 0; longtime_start = System.currentTimeMillis(); for(inti=0; i <= 100000; i++) { sum += i; } System.out.println(sum); longtime_end = System.currentTimeMillis(); System.out.println(time_end - time_start); } }
我的电脑结果输出 2毫秒,这个算性能比较好的,因为一秒等于1000毫秒,2毫秒计算从1相加到10万,是很快的速度。
4)arraycopy()
数组的拷贝,从原数组复制一个长度和内容一样的新数组出来。
package otherclass; import java.util.Arrays; public class Demo1_System { public static void main(String[] args) { int[] src = {11,22,33,44,55}; //5个元素 int[] dest = newint[8]; //8个元素 //通过arraycopy方法,实现完整数组拷贝到新数组内 System.arraycopy(src, 0, dest, 0, 5); for(inti=0; i < dest.length; i++) { System.out.print(dest[i]+ " "); } } }
输出:11 22 33 44 55 0 0 0
调整起止和长度参数,再来使用这个数组拷贝方法。
package otherclass; import java.util.Arrays; public class Demo1_System { public static void main(String[] args) { int[] src = {11,22,33,44,55}; //5个元素 int[] dest = newint[8]; //8个元素 //通过arraycopy方法,实现完整数组拷贝到新数组内 System.arraycopy(src, 1, dest, 4, 3); for(inti=0; i < dest.length; i++) { System.out.print(dest[i]+ " "); } } }
输出:0 0 0 0 22 33 44 0