Java System类详解_动力节点Java学院整理

发布时间 - 2026-01-11 00:43:54    点击率:

System类是jdk提供的一个工具类,有final修饰,不可继承,由名字可以看出来,其中的操作多数和系统相关。其功能主要如下:

• 标准输入输出,如out、in、err

• 外部定义的属性和环境变量的访问,如getenv()/setenv()和getProperties()/setProperties()

• 加载文件和类库的方法,如load()和loadLibrary()、

• 一个快速拷贝数组的方法:arraycopy()

• 一些jvm操作,如gc()、runFinalization()、exit(),该部分并未在源码的java doc中提到,可能因为本身不建议主动调用吧。而且这几个方法都仅仅是Runtime.getRuntime()的调用,两者没有区别 下边直接看图,主要的方法和功能都已经列出来。

 下边我们重点来该类是如何初始化的。 首先在开头我们就可以看如下代码:

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

类中的静态代码块调用了一个native方法registerNatives(),可以猜到该方法应该是一个入口方法,看一*释:通过静态初始化注册native方法,该方法会令vm通过调用initializeSystemClass方法来完成初始化工作。果然如此,那么接下来我们看下initializeSystemClass方法吧:

private static void initializeSystemClass() {
  // 初始化props
  props = new Properties();
  initProperties(props); 
  sun.misc.VM.saveAndRemoveProperties(props);
  //获取系统相关的换行符
  lineSeparator = props.getProperty("line.separator");
  sun.misc.Version.init();
  //分别创建in、out、err的实例对象,并通过setXX0()初始化,查看setXX0()方法可知,这是个native方法,将系统的标准流管理到类内的对象
  FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
  FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
  FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
  setIn0(new BufferedInputStream(fdIn));
  setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));
  setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));
  //加载zip包以获取java.util.zip.ZipFile这个类,以便之后加载利库使用
  loadLibrary("zip");
  // 设置平台相关的信号处理
  Terminator.setup();
  // 初始化sun.misc相关的环境变量
  sun.misc.VM.initializeOSEnvironment();
  // 主线程不会在同一个线程组中添加相同的线程,我们必须在这里自己实现。注释半天没弄明白,看代码就是主线程自己把自己加到了自己的线程组中......
  Thread current = Thread.currentThread();
  current.getThreadGroup().add(current);
  // 注册共享秘钥?注释没看明白,该方法就是实例化一个JavaLangAccess
  setJavaLangAccess();
  // 子系统在初始化的时候可以调用sun.misc.VM.isBooted(),以保证在application类加载器启动前不做任何事。booted()其实就是改了个状态,使isBooted()变为true。
  sun.misc.VM.booted();
}

以上所述是小编给大家介绍的Java System类详解_动力节点Java学院整理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# java  # system类  # Java System类用法实战案例  # Java Math类、Random类、System类及BigDecimal类用法示例  # 十分钟速懂java知识点 System类  # java system类使用方法示例 获取系统信息  # java基础(System.err和System.out)详解  # Java获取当前系统事件System.currentTimeMillis()方法  # Java System类两个常用方法代码实例  # 加载  # 小编  # 流管  # 自己的  # 组中  # 是一个  # 在这里  # 在此  # 果然如此  # 半天  # 给大家  # 仅仅是  # 不做  # 可以看出  # 这几个  # 这是个  # 我们必须  # 改了  # 来完成  # 所述 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何基于云服务器快速搭建个人网站?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  如何在Windows环境下新建FTP站点并设置权限?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  JS中对数组元素进行增删改移的方法总结  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel如何记录自定义日志?(Log频道配置)  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何快速搭建安全的FTP站点?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  详解Android——蓝牙技术 带你实现终端间数据传输  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  海南网站制作公司有哪些,海口网是哪家的?  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何彻底删除建站之星生成的Banner?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  音乐网站服务器如何优化API响应速度?  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Swift开发中switch语句值绑定模式  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  javascript读取文本节点方法小结  Laravel如何保护应用免受CSRF攻击?(原理和示例)  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  Python自动化办公教程_ExcelWordPDF批量处理案例  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  如何撰写建站申请书?关键要点有哪些?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在阿里云虚拟主机上快速搭建个人网站?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  在线制作视频的网站有哪些,电脑如何制作视频短片?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  如何在IIS管理器中快速创建并配置网站?  C++时间戳转换成日期时间的步骤和示例代码  Laravel storage目录权限问题_Laravel文件写入权限设置  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  JavaScript模板引擎Template.js使用详解  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环