System类梳理

15 篇文章 0 订阅
本文详细介绍了Java中的System类,包括如何使用arrayCopy方法进行数组复制,利用currentTimeMillis和nanoTime获取系统时间,以及如何获取和操作系统环境变量和属性。System类还提供了设置和获取系统属性的API,并且可以调用Runtime的方法如exit、gc等。
摘要由CSDN通过智能技术生成

System类,可以完成:

数组copy、获取系统时间、获取系统环境变量、操作应用属性变量

数组copy

数组,是一个定长的对象。如果需要存储的数据长度 超过 初始定义的长度时,就需要 扩容。将原数组中的数据 copy 到另一个新的数组中。

必须使用 System类提供的 arrayCopy 来完成 数组的copy。

public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);

系统时间

public static native long currentTimeMillis();

public static native long nanoTime();

获取环境变量

环境变量是当前系统的,只能读取现有的环境变量的数据

public static java.util.Map<String,String> getenv() {
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPermission(new RuntimePermission("getenv.*"));
        }

        return ProcessEnvironment.getenv();
    }


public static String getenv(String name) {
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPermission(new RuntimePermission("getenv."+name));
        }

        return ProcessEnvironment.getenv(name);
    }

操作属性变量

对于属性的操作,是System类中 持有 java.util.Properties,也是一种map结构。

设置属性

public static void setProperties(Properties props) {
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPropertiesAccess();
        }
        if (props == null) {
            props = new Properties();
            initProperties(props);
        }
        System.props = props;
    }


public static String setProperty(String key, String value) {
        checkKey(key);
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPermission(new PropertyPermission(key,
                SecurityConstants.PROPERTY_WRITE_ACTION));
        }

        return (String) props.setProperty(key, value);
    }

读取属性

public static Properties getProperties() {
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPropertiesAccess();
        }

        return props;
    }


public static String getProperty(String key) {
        checkKey(key);
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPropertyAccess(key);
        }

        return props.getProperty(key);
    }


public static String getProperty(String key, String def) {
        checkKey(key);
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPropertyAccess(key);
        }

        return props.getProperty(key, def);
    }

删除指定属性

public static String clearProperty(String key) {
        checkKey(key);
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPermission(new PropertyPermission(key, "write"));
        }

        return (String) props.remove(key);
    }

 4个特殊的方法

都是调用Runtime的方法

public static void exit(int status) {
        Runtime.getRuntime().exit(status);
    }

public static void gc() {
        Runtime.getRuntime().gc();
    }


@CallerSensitive
public static void load(String filename) {
        Runtime.getRuntime().load0(Reflection.getCallerClass(), filename);
}

@CallerSensitive
public static void loadLibrary(String libname) {
        Runtime.getRuntime().loadLibrary0(Reflection.getCallerClass(), libname);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值