System 类基本上天天用,但是平时很少去关注。
方法摘要 | |
| 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
| 移除指定键指示的系统属性。 |
| 返回与当前 Java 虚拟机关联的唯一 Console 对象(如果有)。 |
| 返回以毫秒为单位的当前时间。 |
| 终止当前正在运行的 Java 虚拟机。 |
| 运行垃圾回收器。 |
| 返回一个不能修改的当前系统环境的字符串映射视图。 |
| 获取指定的环境变量值。 |
| 确定当前的系统属性。 |
| 获取指定键指示的系统属性。 |
| 获取用指定键描述的系统属性。 |
| 获取系统安全接口。 |
| 返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。 |
| 返回从创建此 Java 虚拟机的实体中继承的信道。 |
| 从作为动态库的本地文件系统中以指定的文件名加载代码文件。 |
| 加载由 |
| 将一个库名称映射到特定于平台的、表示本机库的字符串中。 |
| 返回最准确的可用系统计时器的当前值,以毫微秒为单位。 |
| 运行处于挂起终止状态的所有对象的终止方法。 |
| 已过时。 该方法具有固有的不安全性。它可能对正在使用的对象调用终结方法,而其他线程同时正在操作这些对象,从而导致不正确的行为或死锁。 |
| 重新分配“标准”错误输出流。 |
| 重新分配“标准”输入流。 |
| 重新分配“标准”输出流。 |
| 将系统属性设置为 |
| 设置指定键指示的系统属性。 |
| 设置系统安全性。 |
使用很简单,主要来看看 getProperties() 方法:
public static void main(String[] args) {
Properties properties = System.getProperties();
Set<Object> objects = properties.keySet();
objects.forEach(obj-> System.out.println(obj));
}
输出结果有很多属性,在 java的System类常用方法中一一解释了:
来看几个有趣的属性:
public static void main(String[] args) {
/* Properties properties = System.getProperties();
Set<Object> objects = properties.keySet();
objects.forEach(obj-> System.out.println(obj));*/
String s1 = System.getProperty("user.dir");
String s2 = System.getProperty("file.separator");
System.out.println("user.dir--->"+s1);
System.out.println("file.separator--->"+s2);
}
输出结果:
user.dir--->C:\Users\Dongguabai\Downloads\demo
file.separator--->\
先看 user.dir,输出的结果就是当前工作的目录,与 idea 这里的目录相同:
一个很常见的应用就是可以获取当前工程的 classes 绝对路径:
String classesPath = System.getProperty("user.dir")
+ File.separator + "target" + File.separator + "classes";
因为在嵌入式 Servlet 容器的时候,是需要获取classpath 的。
还有一个就是 file.separator,因为不同系统的文件分隔符是不一样的,这个就类似于 File.separator。