一、概述

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虚拟机关联的唯一的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()
//数组拷贝的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相关推荐

  1. 从JDK源码看关闭钩子

    关闭钩子 Java提供了Shutdown Hook机制,它让我们在程序正常退出或者发生异常时能有机会做一些清场工作.使用的方法也很简单,Java.Runtime.addShutdownHook(Thr ...

  2. 调试JDK源码-一步一步看HashMap怎么Hash和扩容

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  3. java int类源码,一起学JDK源码 -- Integer类

    Integer类为java基本类型int的包装类,除了前面提到的Byte类,Short类中的大部分方法,Integer类中还提供了很多处理int类型的方法,接下来就让我们一起看看吧. 基础知识: 1. ...

  4. 一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach

    一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 代 ...

  5. JDK源码学习路线~每天学一点~每天进步一点点

    很多java开发的小伙伴都会阅读jdk源码,然而确不知道应该从哪读起.以下为小编整理的通常所需阅读的源码范围. 标题为包名,后面序号为优先级1-4,优先级递减 1.java.lang 1) Objec ...

  6. 一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate

    一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点 ...

  7. JAVA JDK源码在线阅读

    Java的版本是1.8.0_111,我把JDK源码发布到了github上,大家看起来也比较方便,地址: https://github.com/daiqingliang/java_jdk1.8.0_11 ...

  8. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  9. JDK源码研究Jstack,JMap,threaddump,dumpheap的原理

    JDK最新bug和任务领取:https://bugs.openjdk.java.net/projects/JDK/issues 参加OpenJDK社区:https://bugs.openjdk.jav ...

  10. Java是如何实现自己的SPI机制的? JDK源码(一)

    注:该源码分析对应JDK版本为1.8 1 引言 这是[源码笔记]的JDK源码解读的第一篇文章,本篇我们来探究Java的SPI机制的相关源码. 2 什么是SPI机制 那么,什么是SPI机制呢? SPI是 ...

最新文章

  1. js中 字符串与Unicode 字符值序列的相互转换
  2. StoryBoard布局注意事项
  3. js 点击最后一个 和倒数第二个_精选一组趣知识;最后一个节目是压轴还是压台...
  4. github-share报错无法读取远程仓库
  5. ImportError: No module named _caffe
  6. XP系统每次打开我的电脑出现自动扫描现象解决办法
  7. 将Linkedin连结到outlook中
  8. 7. namp工具的基础了解
  9. 液压传动与气动技术【1】
  10. 线程系列2---线程同步
  11. 常见的几种手机传感器
  12. [经验教程]国内如何下载更新google谷歌浏览器及更新谷歌chrome浏览器无法访问此网站怎么办?
  13. 用户态与内核态之间的切换
  14. 解决 Elasticsearch 查询时 Fielddata is disabled on text fields by default 错误
  15. 简单家乡风景静态HTML网页设计作品 DIV布局家乡介绍网页模板代码
  16. 查询一段时间内的具体时间
  17. 单点登录的三种实现方式
  18. simulink实现他励直流电动机减弱磁通调速仿真
  19. 为何概述(翻译)CS229这个系列
  20. PID控制器中的常见问题

热门文章

  1. Mellanox CX-5网卡支持OVS流表加速功能的调研
  2. 大规模分布式系统资源管理(二)
  3. Docker持续交付部署类型
  4. React 第六章 事件的绑定
  5. java中double类型占几个字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...
  6. nginx简单的操作
  7. jQuery 引用地址{包括jquery和google提供的地址}, 节省你不必要的流量
  8. 使用netty实现聊天室功能
  9. gRPC服务注册发现及负载均衡的实现方案与源码解析
  10. 深入学习用Go编写HTTP服务器