JDK源码(18)-System
一、概述
System是用的非常多的一个final类。它不能被实例化。System类提供了标准的输入输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的方法;以及高效的拷贝数组中一部分元素的方法。
二、类定义和属性
public final class System
三个流:
public final static InputStream in = null;
public final static PrintStream out = null;
public final static PrintStream err = null;
err:按照惯例,此输出流用于显示错误消息或应该立即引起用户注意的其他信息,即使主要输出流(变量out
的值已重定向到文件或其他目标,即通常不会持续监控。
三、主要方法介绍
修饰符和类型 | 方法及描述 |
---|---|
static void
|
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将指定源数组中的数组从指定位置复制到目标数组的指定位置。 |
static String
|
clearProperty(String key)
删除指定键指定的系统属性。 |
static Console
|
console()
返回与当前Java虚拟机关联的唯一的 |
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 String
|
lineSeparator()
返回与系统相关的行分隔符字符串。 |
static void
|
load(String filename)
加载由filename参数指定的本机库。 |
static void
|
loadLibrary(String libname)
加载 |
static String
|
mapLibraryName(String libname)
将库名称映射到表示本地库的平台特定字符串。 |
static long
|
nanoTime()
以纳秒为单位返回正在运行的Java虚拟机的高分辨率时间源的当前值。 |
static void
|
runFinalization()
运行任何对象等待定稿的最终化方法。 |
static void
|
runFinalizersOnExit(boolean value) 已弃用
这种方法本质上是不安全的。 它可能导致在活动对象上调用finalizer,而其他线程同时操作这些对象,导致不稳定的行为或死锁。 |
static void
|
setErr(PrintStream err)
重新分配“标准”错误输出流。 |
static void
|
setIn(InputStream in)
重新分配“标准”输入流。 |
static void
|
setOut(PrintStream out)
重新分配“标准”输出流。 |
static void
|
setProperties(Properties props)
将系统属性设置为 |
static String
|
setProperty(String key, String value)
设置由指定键指示的系统属性。 |
static void
|
setSecurityManager(SecurityManager s)
设置系统安全性。 |
//返回当前时间(以毫秒为单位)。 请注意,虽然返回值的时间单位为毫秒,但该值的粒度取决于底层操作系统,并且可能较大。 例如,许多操作系统以几十毫秒为单位测量时间。
public static long currentTimeMillis()//以纳秒为单位返回正在运行的Java虚拟机的高精度时间值。一般用于测量方法执行时间。
public static long nanoTime()
//数组拷贝的native方法,将指定源数组中的数组从指定位置复制到目标数组的指定位置。
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
可以通过getProperty、getProperties、getenv获取系统属性和环境变量。
需要注意,部分方法在执行的时候,需要安全管理的验证:SecurityManager。
在没啥了,挺简单的一个类。源码再往下翻就是native级别了,都是c++实现的。
over!
JDK源码(18)-System相关推荐
- 从JDK源码看关闭钩子
关闭钩子 Java提供了Shutdown Hook机制,它让我们在程序正常退出或者发生异常时能有机会做一些清场工作.使用的方法也很简单,Java.Runtime.addShutdownHook(Thr ...
- 调试JDK源码-一步一步看HashMap怎么Hash和扩容
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- java int类源码,一起学JDK源码 -- Integer类
Integer类为java基本类型int的包装类,除了前面提到的Byte类,Short类中的大部分方法,Integer类中还提供了很多处理int类型的方法,接下来就让我们一起看看吧. 基础知识: 1. ...
- 一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach
一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 代 ...
- JDK源码学习路线~每天学一点~每天进步一点点
很多java开发的小伙伴都会阅读jdk源码,然而确不知道应该从哪读起.以下为小编整理的通常所需阅读的源码范围. 标题为包名,后面序号为优先级1-4,优先级递减 1.java.lang 1) Objec ...
- 一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate
一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点 ...
- JAVA JDK源码在线阅读
Java的版本是1.8.0_111,我把JDK源码发布到了github上,大家看起来也比较方便,地址: https://github.com/daiqingliang/java_jdk1.8.0_11 ...
- java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实
好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...
- JDK源码研究Jstack,JMap,threaddump,dumpheap的原理
JDK最新bug和任务领取:https://bugs.openjdk.java.net/projects/JDK/issues 参加OpenJDK社区:https://bugs.openjdk.jav ...
- Java是如何实现自己的SPI机制的? JDK源码(一)
注:该源码分析对应JDK版本为1.8 1 引言 这是[源码笔记]的JDK源码解读的第一篇文章,本篇我们来探究Java的SPI机制的相关源码. 2 什么是SPI机制 那么,什么是SPI机制呢? SPI是 ...
最新文章
- js中 字符串与Unicode 字符值序列的相互转换
- StoryBoard布局注意事项
- js 点击最后一个 和倒数第二个_精选一组趣知识;最后一个节目是压轴还是压台...
- github-share报错无法读取远程仓库
- ImportError: No module named _caffe
- XP系统每次打开我的电脑出现自动扫描现象解决办法
- 将Linkedin连结到outlook中
- 7. namp工具的基础了解
- 液压传动与气动技术【1】
- 线程系列2---线程同步
- 常见的几种手机传感器
- [经验教程]国内如何下载更新google谷歌浏览器及更新谷歌chrome浏览器无法访问此网站怎么办?
- 用户态与内核态之间的切换
- 解决 Elasticsearch 查询时 Fielddata is disabled on text fields by default 错误
- 简单家乡风景静态HTML网页设计作品 DIV布局家乡介绍网页模板代码
- 查询一段时间内的具体时间
- 单点登录的三种实现方式
- simulink实现他励直流电动机减弱磁通调速仿真
- 为何概述(翻译)CS229这个系列
- PID控制器中的常见问题