简介:
- 主要用于获取系统的属性数据和其他操作,构造方法(私有的)
- 实际上 System 类是一些与系统相关属性和方法的集合,而且在System 类中所有的属性,都是静态的,要想引用这些属性和方法,直接使用 System 类调用即可。
常用方法:
方法名 | 说明 |
---|---|
static void arraycopy(...); | 复制数组 |
static long currentTimeMillis(); | 获取当前系统时间,返回毫秒值 (常用来计算一个程序执行时间) |
static void gc(); | 建议 jvm 赶快启动垃圾回收期器回收垃圾 |
static void exit(int status); | 退出 jvm 如果参数是 0 表示正常退出 jvm 非 0 表示异常退出 |
getProperties(); | 确定当前的系统属性。 |
getProperty(String key); | 获取系统某一属性。key - 系统属性的名称。 |
- 可以使用的 key 及其相关的描述。
键 | 相关值的描述 |
---|---|
java.version | Java 运行时环境版本 |
java.vendor | Java 运行时环境供应商 |
java.vendor.url | Java 供应商的 URL |
java.home | Java 安装目录 |
java.vm.specification.version | Java 虚拟机规范版本 |
java.vm.specification.vendor | Java 虚拟机规范供应商 |
java.vm.specification.name | Java 虚拟机规范名称 |
java.vm.version | Java 虚拟机实现版本 |
java.vm.vendor | Java 虚拟机实现供应商 |
java.vm.name | Java 虚拟机实现名称 |
java.specification.version | Java 运行时环境规范版本 |
java.specification.vendor | Java 运行时环境规范供应商 |
java.specification.name | Java 运行时环境规范名称 |
java.class.version | Java 类格式版本号 |
java.class.path | Java 类路径 |
java.library.path | 加载库时搜索的路径列表 |
java.io.tmpdir | 默认的临时文件路径 |
java.compiler | 要使用的 JIT 编译器的名称 |
java.ext.dirs | 一个或多个扩展目录的路径 |
os.name | 操作系统的名称 |
os.arch | 操作系统的架构 |
os.version | 操作系统的版本 |
file.separator | 文件分隔符(在 UNIX 系统中是“/”) |
path.separator | 路径分隔符(在 UNIX 系统中是“:”) |
line.separator | 行分隔符(在 UNIX 系统中是“/n”) |
user.name | 用户的账户名称 |
user.home | 用户的主目录 |
user.dir | 用户的当前工作目录 |
- 实例 1:
System.arraycopy(src, srcPos, dest, destPos, length);
package com.base.demo05;import java.util.Arrays;public class Demo07 {public static void main(String[] args) {// 1.arraycopy(src, srcPos, dest, destPos, length)/*src-原数组srcPos-从哪个位置开始复制0dest-目标数组destPos-目标数组的位置length-复制的长度*/// 原数组int[] arr = {12, 6, 30, 18, 22, 55, 98, 3, 36};// 目标数组int[] dest = new int[9];// Arrays.copyOf(original, newLength); 实际调用 System.arraycopy();System.arraycopy(arr, 0, dest, 0, arr.length); // 本地方法,效率高for (int i = 0; i < dest.length; i++) {System.out.println(dest[i]);}}
}
- 实例 2:
package com.base.demo05;public class Demo08 {public static void main(String[] args) {// 开始时间long begin = System.currentTimeMillis();int sum = 0;for (int i = 0; i < 100000; i++) {sum += i;}// 结束时间long end = System.currentTimeMillis();// 循环所用时间System.out.println("用时:" + (end - begin) + "ms");// 获取本机操作系统System.out.println("操作系统的名称:" + System.getProperty("os.name"));// 获取本机的全部环境属性System.out.println(System.getProperties());}
}
垃圾对象的回收
- Java 中用垃圾的自动收集机制,可以不定期地释放 Java 中的垃圾空间。在 System 类中有一个
System.gc();
方法,此方法可以进行垃圾的收集。
什么是垃圾对象?
- 一个对象,如果不再被任何栈内存所引用,那么此对象就可以称为垃圾对象,等待被回收。实际上,等待的时间是不确定的,所以直接调用
System.gc();
方法进行垃圾的回收。 - 提示:开发中的垃圾收集,基本上都是由系统自动完成的,除非特殊情况,一般很少直接去调用
System.gc();
方法。
- 实例:
package com.base.demo05;public class Demo10 {public static void main(String[] args) {Student a = new Student("xiaoming", 10);// 断开引用释放空间a = null;// 直接new,没用引用new Student("lihua", 11);// 进行垃圾回收System.gc();// 退出 JVMSystem.exit(0);// 已经退出 JVM,不会被执行System.out.println("程序结束了!");}static class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}public String toString() {return "姓名:" + name + " 年龄:" + age;}// 对象释放空间时默认调用此方法// finalize() Java 8 以后弃用public void finalize() throws Throwable {// 直接打印对象调用toStringSystem.out.println("对象被释放:" + this);}}
}
- 运行结果

总结
- 在 System 类中的
currentTimeMillis();
方法,常用来计算一个程序执行的时间,非常实用。 - 通过 System 类中的
getProperties();
方法,不仅可以获取用户工作目录,还可以获取系统用户名。 - 关于
System.gc();
方法,不是调用这个方法,就一定会回收对象,具体还是由 JVM 确认(要判断是否为垃圾对象,如果不是垃圾对象,即使调用,也不会回收的)
© 著作权归作者所有,转载或内容合作请联系作者

喜欢的朋友记得点赞、收藏、关注哦!!!