java基础-System类常用方法介绍
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.System类概念
在API中system类介绍的比较简单,我们给出定义,system中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。
注意,system类不能手动创建对象,因为构造方法被私有化(即被private关键字修饰),组织外界创建对象(即不能用new关键字生成一个对象)。System类中的都是静态方法(static关键字修饰),类名访问即可。在JDK中,有许多这样的类。在 System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
二.System的常用方法
1>.获取系统当前毫秒值(public static long currentTimeMillis())
获取当前系统时间与1970年01月01日00:00点之前的毫秒差值,我们可以用它来测试程序的执行时间。代码如下:
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class SystemDemo {10 public static void main(String[] args) {11 long start = System.currentTimeMillis();12 for(int i=1;i<=9;i++) {13 for(int j=1;j<=i;j++) {14 System.out.printf("%d x %d = %d \t",j,i,(j*i));15 }16 System.out.println();17 }18 long end = System.currentTimeMillis();19 System.out.printf("程序运行时间为[%d]毫秒!",(end-start));20 }21 }22 23 24 /*25 以上代码执行结果如下:26 1 x 1 = 1 27 1 x 2 = 2 2 x 2 = 4 28 1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 29 1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 30 1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 31 1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 32 1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49 33 1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64 34 1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81 35 程序运行时间为[42]毫秒!36 */
2>.结束正在运行的Java程序(public staitc void exit(int status))
参数传入一个数字即可。通常传入0记为正常状态,其它为异常状态。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class SystemDemo {10 public static void main(String[] args) {11 int counts = 0;12 while(true) {13 System.out.println("yinzhengjie");14 if(counts==5) {15 System.exit(0);16 }17 counts++;18 }19 }20 }21 22 23 /*24 以上代码执行结果如下:25 yinzhengjie26 yinzhengjie27 yinzhengjie28 yinzhengjie29 yinzhengjie30 yinzhengjie31 */
3>.垃圾回收器(public static void gc())
用来运行JVM中的垃圾回收器,完成内存中垃圾的清除。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 class Student{10 //清除垃圾时,会默认调用被清空对象的finalize方法。11 public void finalize() { 12 System.out.println("垃圾已经被收取啦!");13 }14 }15 16 17 public class SystemDemo {18 public static void main(String[] args) {19 new Student();20 new Student();21 new Student();22 new Student();23 new Student();24 System.gc(); 25 26 }27 }28 29 30 /*31 以上代码执行结果如下:(输出结果不一定是三行,有可能是0行或者5行哟!每次运行的结果几乎是不一致的)32 垃圾已经被收取啦!33 垃圾已经被收取啦!34 垃圾已经被收取啦!35 */
4>.确定当前的系统属性(public static getProperties getProperties()
)
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class SystemDemo {10 public static void main(String[] args) {11 System.out.println(System.getProperties());12 }13 }14 15 16 /*17 以上代码执行结果如下:18 {sun.desktop=windows, awt.toolkit=sun.awt.windows.WToolkit, java.specification.version=9, file.encoding.pkg=sun.io, sun.cpu.isalist=amd64, sun.jnu.encoding=GBK, java.class.path=D:\10.Java\JavaSE\eclipse\Myprogram\workspace\Day6\bin, java.vm.vendor=Oracle Corporation, sun.arch.data.model=64, user.variant=, java.vendor.url=http://java.oracle.com/, user.timezone=, os.name=Windows 7, java.vm.specification.version=9, sun.java.launcher=SUN_STANDARD, user.country=CN, sun.boot.library.path=D:\10.Java\jdk-9.0.4\bin, sun.java.command=cn.org.yinzhengjie.demo.SystemDemo, jdk.debug=release, sun.cpu.endian=little, user.home=C:\Users\Administrator, user.language=zh, java.specification.vendor=Oracle Corporation, java.home=D:\10.Java\jdk-9.0.4, file.separator=\, java.vm.compressedOopsMode=Zero based, line.separator=19 , java.vm.specification.vendor=Oracle Corporation, java.specification.name=Java Platform API Specification, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, user.script=, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, java.runtime.version=9.0.4+11, user.name=Administrator, path.separator=;, os.version=6.1, java.runtime.name=Java(TM) SE Runtime Environment, file.encoding=GBK, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, java.vendor.url.bug=http://bugreport.java.com/bugreport/, java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\, java.version=9.0.4, user.dir=D:\10.Java\JavaSE\eclipse\Myprogram\workspace\Day6, os.arch=amd64, java.vm.specification.name=Java Virtual Machine Specification, java.awt.printerjob=sun.awt.windows.WPrinterJob, sun.os.patch.level=Service Pack 1, java.library.path=D:\10.Java\jdk-9.0.4\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:/10.Java/jdk-9.0.4/bin/server;D:/10.Java/jdk-9.0.4/bin;D:\10.Java\jdk-9.0.4\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\04.Python\python3.6.5\Scripts\;D:\04.Python\python3.6.5\;D:\10.Java\JavaSE\eclipse\Myprogram\eclipse;;., java.vm.info=mixed mode, java.vendor=Oracle Corporation, java.vm.version=9.0.4+11, sun.io.unicode.encoding=UnicodeLittle, java.class.version=53.0}20 */
各个属性关系对应图如下:
5>. System类方法复制数组(public static notive void arraycopy( src, int srcPos, dest, int destPos, int length)
)【notive 是可以调用当前操作系统来实现数组拷贝的】
用来实现将源数组部分元素复制到目标数组的指定位置。各个参数功能如下:
Object src:要复制的原数组;
Int srcPos:数组源的起始索引;
Object dest:复制后的目标数组;
int destPos:目标数组起始索引;
int length,指定复制的长度;
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class SystemDemo {10 public static void main(String[] args) {11 int[] src = {1,22,333,4444,5555,666666,7777777};12 int[] dest = {10,20,30};13 System.arraycopy(src, 2, dest, 0, 2);14 15 for(int i=0;i