Java System 类

版权声明: 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

猜你喜欢

转载自blog.csdn.net/Dongguabai/article/details/84971028