Java-API简析_java.lang.System类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/130442963
出自【进步*于辰的博客

1、概述

继承关系:

  • java.lang.Object
    • java.lang.System

public final class System extends Object

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

在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

2、方法摘要

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

从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

注译:

从指定的源数组的指定位置开始,将数组复制到目标数组的指定位置。将数组组件的子序列从src引用的源数组复制到dest引用的目标数组。复制的组件数量等于length参数。源数组中位置srcPos到位置srcPos+length - 1的组件分别复制到目标数组的位置destPos到位置destPos+length - 1

如果srcdest参数引用相同的数组对象,则执行复制,就好像首先将位置srcPossrcPos+length - 1的组件复制到具有长度组件的临时数组中,然后将临时数组的内容复制到目标数组的位置destPosdestPos+length - 1

如果dest为空,则抛出NullPointerException

如果src为空,则抛出 NullPointerException,并且不修改目标数组。

否则,如果下列任何一项为 true,则抛出ArrayStoreException,并且不修改目标数组:

  • src指向的不是数组。
  • dest指向的不是数组。
  • srcdest指向的数组类型是不同的数据类型。
  • src指向基本数据类型数组,dest指向引用数据类型数组。
  • src指向引用数据类型数组,dest指向基本数据类型数组。

否则,如果以下任何一个为 true,则抛出IndexOutOfBoundsException,并且不修改目标数组:

  • srcPos < 0
  • destPos < 0
  • length < 0
  • srcPos + length > src.length
  • destPos + length > dest.length

否则,如果源数组从位置srcPossrcPos+length-1的任何实际组件不能通过赋值转换转换为目标数组的组件类型,则抛出ArrayStoreException。在这种情况下,设k为小于length的最小非负整数,使得src[srcPos + k]不能被转换为目标数组的组件类型。当抛出异常时,从位置srcPos到位置srcPos + k - 1的源数组组件将已经被复制到位置destPos到位置destPos + k - 1的目标数组组件,并且目标数组的其他位置不会被修改。(由于已经逐项列出的限制,这一段只适用于两个数组的组件类型都是引用类型的情况。)


扩展说明: 扩展说明: 扩展说明:

关于扩容,可参考ArrayList<E>类的第5.6项。

诸如 ArrayList 等类的“扩容机制”,其底层最终都是通过调用此方法来实现元素“拷贝”的。

从上述中对此方法的注译中可知,此方法仅用于元素复制,无扩容功能。

2.2 static String clearProperty(String key)

移除指定键指示的系统属性。

2.3 static native long currentTimeMillis()

返回以毫秒为单位的当前时间。

2.4 static void exit(int status)

终止当前正在运行的 Java 虚拟机。

2.5 static void gc()

运行垃圾回收器。

2.6 static Map<String,String> getenv()

返回一个不能修改的当前系统环境的字符串映射视图。

示例:

Map<String, String > map = System.getenv();
for (Map.Entry<String , String > next: map.entrySet()) {
	sout next;
}

2.7 static String getenv(String name)

获得指定的环境变量值。

2.8 static Properties getProperties()

确定当前的系统属性。

示例:

Properties p = System.getProperties();
for (Map.Entry<Object, Object> entry : p.entrySet())
	sout entry.getKey() + "\t=\t" + entry.getValue();

2.9 static String getProperty(String key)

获得指定键指示的系统属性。

2.10 static String getProperty(String key, String def)

获得用指定键描述的系统属性。

2.11 static SecurityManager getSecurityManager()

获得系统安全接口。

2.12 static int identityHashCode(Object x)

返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。

2.13 static Channel inheritedChannel()

返回从创建此 Java 虚拟机的实体中继承的信道。(暂未可知)

2.14 static void load(String filename)

从作为动态库的本地文件系统中以指定的文件名加载代码文件。(暂未可知)

2.15 static void loadLibrary(String libname)

加载由 libname 参数指定的系统库。(暂未可知)

2.16 static String mapLibraryName(String libname)

将一个库名称映射到特定于平台的、表示本机库的字符串中。(暂未可知)

2.17 static native long nanoTime()

返回最准确的可用系统计时器的当前值,以毫微秒(纳秒)为单位。

2.18 static void runFinalization()

运行处于挂起终止状态的所有对象的终止方法。(暂未可知)

2.19 static void runFinalizersOnExit(boolean value)

已过时。 该方法具有固有的不安全性。它可能对正在使用的对象调用终结方法,而其他线程同时正在操作这些对象,从而导致不正确的行为或死锁。

2.20 static void setErr(PrintStream err)

重新分配“标准”错误输出流。(暂未可知)

2.21 static void setIn(InputStream in)

重新分配“标准”输入流。

2.22 static void setOut(PrintStream out)

重新分配“标准”输出流。

2.23 static void setProperties(Properties props)

将系统属性设置为 Properties 参数。

2.24 static String setProperty(String key, String value)

设置指定键指示的系统属性。

2.25 static void setSecurityManager(SecurityManager s)

设置系统安全性。

3、方法摘要(不开放)

3.1 private static void checkKey(String key)

检查指定键是否为null""

3.2 private static native void registerNatives()

通过静态初始化器注册本地 via。

4、字段摘要

4.1 static PrintStream err

“标准”错误输出流。

注译
流已经打开并准备接受输出数据。

通常,此流对应于主机环境或用户指定的显示输出或其他输出目的地。按照惯例,该输出流用于显示应该引起用户立即注意的错误消息或其他信息,即使主输出流(out的值)已被重定向到通常不被连续监视的文件或其他目的地。

4.2 static InputStream in

“标准”输入流。

注译:
此流已经打开并准备好提供输入数据。通常,此流对应于键盘输入或主机环境或用户指定的其他输入源。

4.3 static PrintStream out

“标准”输出流。

注译:
此流已经打开并准备接受输出数据。通常,此流对应于主机环境或用户指定的显示输出或其他输出目的地。

最后

如果大家需要Java-API文档,我上传了《Java-API文档-包含5/8/11三个版本》。


本文暂缓更新。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进步·于辰

感谢打赏!很高兴可以帮到你!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值