遇见1995

JDK - System

概览

String 类结构图

System类包含几个有用的类字段和方法。它不能被实例化。

主要功能

  • 标准输入、标准输出和错误输出流;
  • 访问外部定义的属性和环境变量;
  • 加载文件和库的一种方法;
  • 以及用于快速复制数组的一部分的实用程序方法。

类结构图1

类结构图2

无法实例化

1
2
3
4
5
6
7
8
9
10
11
12
public final class System {

private static native void registerNatives();
static {
registerNatives();
}

/** Don't let anyone instantiate this class */
// 任何人都不要实例化这个类
private System() {
}
}

标准输入、输出、错误流

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// “标准”输入流。
// 这个流已经打开,可以提供输入数据了。
// 通常,这个流对应于键盘输入或主机环境或用户指定的另一个输入源。
public final static InputStream in = null;

// “标准”输出流。
// 这个流已经打开并准备接受输出数据。
// 通常,此流对应于显示输出或主机环境或用户指定的另一个输出目的地。
public final static PrintStream out = null;

// “标准”错误输出流。
// 这个流已经打开并准备接受输出数据。
// 通常,此流对应于显示输出或主机环境或用户指定的另一个输出目的地。
// 按照惯例,此输出流用于显示错误信息或其他信息,应及时关注用户
// 即使主要的输出流,变量的值,已被重定向到一个文件或其他目的地,通常不是连续监控。
public final static PrintStream err = null;
1
2
3
4
5
// 其他也一致,先执行checkIO()
public static void setOut(PrintStream out) {
checkIO();
setOut0(out);
}
1
2
3
4
5
6
private static void checkIO() {
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("setIO"));
}
}

访问系统属性

getProperty() - 获取系统属性

获取由指定键指示的系统属性。

1
2
3
4
5
6
7
8
9
public static String getProperty(String key) {
checkKey(key);
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPropertyAccess(key);
}

return props.getProperty(key);
}

getenv() - 获取指定环境变量

获取指定环境变量的值。环境变量是一个系统相关的外部命名值。

1
2
3
4
5
6
7
8
public static String getenv(String name) {
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("getenv."+name));
}

return ProcessEnvironment.getenv(name);
}

currentTimeMillis() - 返回当前时间(ms)

注意,虽然返回值的时间单位是毫秒,但是值的粒度取决于底层操作系统,并且可能更大。例如,许多操作系统以几十毫秒为单位测量时间。

1
public static native long currentTimeMillis();

identityHashCode() - 给定对象的散列代码

返回与默认方法hashCode()返回的相同的给定对象的散列代码,不管给定对象的类是否覆盖hashCode()。

1
public static native int identityHashCode(Object x);

gc() - 运行垃圾收集器

调用gc方法表明,Java虚拟机将精力花在回收未使用的对象上,以便使当前占用的内存能够快速重用。

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

exit() - 终止当前运行的Java虚拟机

终止当前运行的Java虚拟机。参数作为状态码; 根据惯例,非零状态码表示异常终止

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

加载文件和库

load() - 加载类库

加载由filename参数指定的本机库。文件名参数必须是绝对路径名

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

快速复制数组某部分

arraycopy() - 复制数组

从指定的源数组(从指定位置开始)复制数组到目标数组的指定位置。

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

专题:

本文发表于 2020-04-06,最后修改于 2020-04-06。

本站永久域名yujian95.cn,也可搜索「 遇见1995 」找到我。

期待关注我的微信公众号「 编程图解 」 ,查看最近的文章和动态。


上一篇 « JDK - String 下一篇 » jQuery 快速入门

赞赏支持

请我吃包子 =^_^=

i ali

支付宝

i wechat

微信

推荐阅读

Big Image