JDK源码(18)-System

简介: JDK源码(18)-System

 一、概述

System是用的非常多的一个final类。它不能被实例化。System类提供了标准的输入输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的方法;以及高效的拷贝数组中一部分元素的方法。

二、类定义和属性

public final class System

image.gif

三个流:

public final static InputStream in = null;
public final static PrintStream out = null;
public final static PrintStream err = null;

image.gif

err:按照惯例,此输出流用于显示错误消息或应该立即引起用户注意的其他信息,即使主要输出流(变量out的值已重定向到文件或其他目标,即通常不会持续监控。

三、主要方法介绍

修饰符和类型 方法及描述
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 String lineSeparator()

返回与系统相关的行分隔符字符串。

static void load(String filename)

加载由filename参数指定的本机库。

static void loadLibrary(String libname)

加载 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)

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

static String setProperty(String key, String value)

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

static void setSecurityManager(SecurityManager s)

设置系统安全性。 

//返回当前时间(以毫秒为单位)。 请注意,虽然返回值的时间单位为毫秒,但该值的粒度取决于底层操作系统,并且可能较大。 例如,许多操作系统以几十毫秒为单位测量时间。
public static long currentTimeMillis()
//以纳秒为单位返回正在运行的Java虚拟机的高精度时间值。一般用于测量方法执行时间。
public static long nanoTime()

image.gif

//数组拷贝的native方法,将指定源数组中的数组从指定位置复制到目标数组的指定位置。
public static native void arraycopy(Object src,  int  srcPos, Object dest, int destPos, int length);

image.gif

可以通过getPropertygetPropertiesgetenv获取系统属性和环境变量。需要注意,部分方法在执行的时候,需要安全管理的验证:SecurityManager。

在没啥了,挺简单的一个类。源码再往下翻就是native级别了,都是c++实现的。

over!


相关文章
|
4天前
|
安全 前端开发 Java
JDK源码级别彻底剖析JVM类加载机制
JDK源码级别彻底剖析JVM类加载机制
|
4天前
|
缓存 Dubbo Java
趁同事上厕所的时间,看完了 Dubbo SPI 的源码,瞬间觉得 JDK SPI 不香了
趁同事上厕所的时间,看完了 Dubbo SPI 的源码,瞬间觉得 JDK SPI 不香了
|
8月前
|
Java 容器
阿里内部流传的JDK源码剖析手册!GitHub已获上千万的访问量
相信现在已经有很多小伙伴知道了“微软”要对JDK下手了! JDK是什么? jdk是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。jdk是整个java开发的核心,它包含了JAVA的运行环境和JAVA工具。相对而言,没有jdk的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。
208 0
|
4天前
|
缓存 Java Spring
Spring 源码阅读 66:基于 JDK 的 AOP 代理如何获取拦截器链(4)- 将 Advice 封装为拦截器
【1月更文挑战第1天】本文分析了 Advice 被封装成 MethodInterceptor 的过程,Spring AOP 用到的五种 Advice 中,有些本身就是 MethodInterceptor 的实现类,而有些需要通过适配器的封装。
44 0
|
8月前
|
设计模式 Java 程序员
太爆了!阿里最新出品2023版JDK源码学习指南,Github三天已万赞
最近后台收到很多粉丝私信,说的是程序员究竟要不要去读源码?当下行情,面试什么样的薪资/岗位才会被问到源码? 对此,我的回答是:一定要去读,并且要提到日程上来! 据不完全统计,现在市面上不管是初级,中级,还是高级岗,面试的时候都有可能会问到源码中的问题,它已经成为程序员常规必备的一个技术点。如果你当下想通过一个面试,或者想把中级薪资要到相对于比较高的话,源码这块就必须要会。
100 0
|
4天前
|
算法 Java 索引
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
【数据结构与算法】4、双向链表(学习 jdk 的 LinkedList 部分源码)
35 0
|
4天前
|
设计模式 Java
根据JDK源码Calendar来看工厂模式和建造者模式
根据JDK源码Calendar来看工厂模式和建造者模式
|
4天前
|
Java Linux iOS开发
Spring5源码(27)-静态代理模式和JDK、CGLIB动态代理
Spring5源码(27)-静态代理模式和JDK、CGLIB动态代理
24 0
|
4天前
|
XML Java 数据格式
Spring 源码阅读 70:基于 JDK 的 AOP 代理拦截器链执行(4)- 容易被忽略的 ExposeInvocationInterceptor
【1月更文挑战第5天】本文分析了 Spring AOP 拦截器链中的一个特殊拦截器 ExposeInvocationInterceptor 的注册的时机以及它的作用。至此,基于 JDK 的 AOP 代理拦截器链执行的逻辑就分析完了。
451 0
|
4天前
|
Java 索引 Spring
Spring 源码阅读 69:基于 JDK 的 AOP 代理拦截器链执行(3)- MethodInterceptor 分析
【1月更文挑战第4天】本文详细分析了 Spring AOP 中五种增强类型对应的拦截器中增强方法的执行逻辑,结合上一篇中分析的 ReflectiveMethodInvocation 中proceed方法的执行逻辑,就组成了完整的拦截器链递归调用的逻辑。
35 0