版权声明: https://blog.csdn.net/Dongguabai/article/details/84971028
System 类基本上天天用,但是平时很少去关注。
方法摘要 | |
---|---|
static void |
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
static String |
clearProperty(String key) 移除指定键指示的系统属性。 |
static Console |
console() 返回与当前 Java 虚拟机关联的唯一 Console 对象(如果有)。 |
static long |
currentTimeMillis() 返回以毫秒为单位的当前时间。 |
static void |
exit(int status) 终止当前正在运行的 Java 虚拟机。 |
static void |
gc() 运行垃圾回收器。 |
static Map<String,String> |
getenv() 返回一个不能修改的当前系统环境的字符串映射视图。 |
static String |
getenv(String name) 获取指定的环境变量值。 |
static Properties |
getProperties() 确定当前的系统属性。 |
static String |
getProperty(String key) 获取指定键指示的系统属性。 |
static String |
getProperty(String key, String def) 获取用指定键描述的系统属性。 |
static SecurityManager |
getSecurityManager() 获取系统安全接口。 |
static int |
identityHashCode(Object x) 返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。 |
static Channel |
inheritedChannel() 返回从创建此 Java 虚拟机的实体中继承的信道。 |
static void |
load(String filename) 从作为动态库的本地文件系统中以指定的文件名加载代码文件。 |
static void |
loadLibrary(String libname) 加载由 libname 参数指定的系统库。 |
static String |
mapLibraryName(String libname) 将一个库名称映射到特定于平台的、表示本机库的字符串中。 |
static long |
nanoTime() 返回最准确的可用系统计时器的当前值,以毫微秒为单位。 |
static void |
runFinalization() 运行处于挂起终止状态的所有对象的终止方法。 |
static void |
runFinalizersOnExit(boolean value) 已过时。 该方法具有固有的不安全性。它可能对正在使用的对象调用终结方法,而其他线程同时正在操作这些对象,从而导致不正确的行为或死锁。 |
static void |
setErr(PrintStream err) 重新分配“标准”错误输出流。 |
static void |
setIn(InputStream in) 重新分配“标准”输入流。 |
static void |
setOut(PrintStream out) 重新分配“标准”输出流。 |
static void |
setProperties(Properties props) 将系统属性设置为 Properties 参数。 |
static String |
setProperty(String key, String value) 设置指定键指示的系统属性。 |
static void |
setSecurityManager(SecurityManager s) 设置系统安全性。 |
使用很简单,主要来看看 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。
参考资料:
https://blog.csdn.net/weixin_41547486/article/details/79583737