首页 > 编程语言 >Java 类之 java.lang.System

Java 类之 java.lang.System

时间:2023-12-14 11:04:27浏览次数:27  
标签:lang Java int 虚拟机 System 数组 java


Java 类之 java.lang.System


文章目录

  • Java 类之 java.lang.System
  • 一、简介
  • 二、主要功能
  • 1、`currentTimeMillis()` - 获取当前时间的毫秒数
  • 说明
  • 代码示例
  • 2、`getProperty(String key)` - 获取系统属性
  • 说明
  • 代码示例
  • 3、`exit(int status)` - 终止虚拟机
  • 说明
  • 代码示例
  • 4、`arraycopy(Object src, int srcPos, Object dest, int destPos, int length)` - 复制数组
  • 说明
  • 代码示例
  • 5、`gc()` - 请求垃圾回收
  • 说明
  • 代码示例
  • 三、其它
  • 1、为什么 System 类要提供一个数组拷贝方法?
  • 2、System.getProperty 常用于获取那些属性?
  • 3、关于 System 类还有哪些需要注意的点吗?


一、简介

java.lang.System 类是 Java 编程语言中的一个核心类,提供了与系统交互的方法和字段。

public final class System

二、主要功能

1、currentTimeMillis() - 获取当前时间的毫秒数

说明

该方法返回自1970年1月1日00:00:00 UTC以来的当前时间与此类实例创建的时间的毫秒差。

代码示例

long currentTime = System.currentTimeMillis();
System.out.println("Current Time in milliseconds: " + currentTime);

2、getProperty(String key) - 获取系统属性

说明

该方法根据指定的键检索系统属性值。

代码示例

String javaVersion = System.getProperty("java.version");
System.out.println("Java Version: " + javaVersion);

3、exit(int status) - 终止虚拟机

说明

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

代码示例

System.out.println("Before exit");
System.exit(0);
System.out.println("After exit"); // 不会执行到这里

4、arraycopy(Object src, int srcPos, Object dest, int destPos, int length) - 复制数组

说明

该方法从源数组复制一个数组到目标数组。

代码示例

int[] sourceArray = {1, 2, 3, 4, 5};
int[] destinationArray = new int[5];

System.arraycopy(sourceArray, 0, destinationArray, 0, sourceArray.length);

// destinationArray 现在包含了 sourceArray 的内容

5、gc() - 请求垃圾回收

说明

该方法是请求 Java 虚拟机进行垃圾回收。

代码示例

// 在某些情况下,可以显式调用垃圾回收
System.gc();

三、其它

1、为什么 System 类要提供一个数组拷贝方法?

System 类提供 arraycopy 方法主要出于性能和效率的考虑。这个方法是为了在底层执行高效的数组拷贝操作而设计的。以下是一些原因解释为什么 System.arraycopy 方法是有用的:

  1. 底层性能优化: System.arraycopy 在底层通常会使用系统级别的内存复制操作,这可能比在 Java 代码中使用循环手动复制数组元素更为高效。这对于大规模数据的拷贝尤其有利。
  2. 原子性: arraycopy 方法是原子的,即要么执行整个拷贝操作,要么不执行。在多线程环境中,这是很重要的,可以避免并发问题,确保在拷贝期间没有其他线程对数组进行修改。
  3. 支持不同类型的数组: arraycopy 可以用于复制不同类型的数组,例如将一个 int 数组的一部分复制到一个 Object 数组中。这种灵活性是手动循环复制难以提供的。
  4. 简化代码: 使用 System.arraycopy 可以减少代码量,使代码更简洁、易读。这对于需要频繁进行数组操作的情况尤为有用。
  5. 系统级内存操作: arraycopy 可以利用底层系统的内存复制机制,因此在某些情况下,比手动循环更为高效,尤其是对于较大的数组。

总体而言,System.arraycopy 是为了提供一个高性能、原子性、灵活且易用的数组拷贝方法,以适应各种不同的应用场景。在处理大量数据和对性能要求较高的情况下,使用这个方法可以更好地满足需求。

2、System.getProperty 常用于获取那些属性?

System.getProperty 方法常用于获取与系统相关的属性信息。通过指定属性的键(key),可以检索与该键相关联的属性值。以下是一些常用的键和相应的属性信息:

  1. Java 运行时环境属性:
  • "java.version": Java 运行时环境版本。
  • "java.vendor": Java 运行时环境供应商。
  • "java.vendor.url": Java 供应商的 URL。
  • "java.home": Java 安装目录。
  • "java.vm.specification.version": Java 虚拟机规范版本。
  • "java.vm.specification.vendor": Java 虚拟机规范供应商。
  • "java.vm.specification.name": Java 虚拟机规范名称。
  • "java.vm.version": Java 虚拟机实现版本。
  • "java.vm.vendor": Java 虚拟机实现供应商。
  • "java.vm.name": Java 虚拟机实现名称。
  1. 操作系统属性:
  • "os.name": 操作系统的名称。
  • "os.arch": 操作系统的架构。
  • "os.version": 操作系统的版本。
  1. 用户和目录属性:
  • "user.name": 用户的账户名称。
  • "user.home": 用户的主目录。
  • "user.dir": 用户的当前工作目录。
  1. 文件分隔符和路径分隔符:
  • "file.separator": 文件分隔符(在 UNIX 系统上是"/“,在 Windows 系统上是”")。
  • "path.separator": 路径分隔符(在 UNIX 系统上是":“,在 Windows 系统上是”;")。

这些属性提供了有关 Java 运行时环境、操作系统和用户环境的信息。通过调用 System.getProperty 方法并传递相应的键,可以在程序中获取这些属性的值,从而实现对运行环境和系统配置的动态适应。

3、关于 System 类还有哪些需要注意的点吗?

除了前面提到的一些常用的方法和属性之外,还有一些关于 System 类需要注意的点:

  1. System.exit() 方法:
  • 使用 System.exit(int status) 可以终止当前正在运行的 Java 虚拟机。注意,如果在程序中调用了 System.exit(),将立即终止整个 Java 运行时,可能导致一些未完成的操作无法完成。在正常情况下,程序应该在退出之前完成必要的清理工作。
  1. System.gc() 方法:
  • 调用 System.gc() 是一个提示 Java 虚拟机执行垃圾回收的方法,但并不能确保立即执行垃圾回收。垃圾回收是由 Java 虚拟机自行管理的,因此程序员通常不需要显式调用 System.gc()
  1. 输入输出流:
  • System.inSystem.outSystem.err 分别代表标准输入、标准输出和标准错误输出。它们分别是 InputStreamPrintStream 的实例。可以使用这些流来进行输入和输出操作。
  1. 性能和效率:
  • System.arraycopy() 方法是一个高效的数组复制方法,特别适用于大规模数据的拷贝。在需要处理大量数据时,使用该方法可以提高性能。
  1. 安全性:
  • 由于 System.exit() 方法可以终止整个 Java 运行时,要慎重使用,避免在正常情况下滥用这个方法。在通常情况下,应该使用异常或其他控制流程来安全地退出程序。
  1. 环境属性:
  • 使用 System.getProperty(String key) 方法可以获取与系统相关的属性信息。这些信息可以用于适应不同的运行环境和系统配置。

总体而言,System 类提供了一些与系统交互的基本方法和属性,但在使用一些方法时需要谨慎,特别是涉及到程序终止和垃圾回收的情况。


标签:lang,Java,int,虚拟机,System,数组,java
From: https://blog.51cto.com/u_13272819/8815684

相关文章

  • Java 类之 java.util.Properties
    Java类之java.util.Properties文章目录Java类之java.util.Properties一、简介二、主要功能1、存储键值对2、读取文件与属性代码示例运行结果截图3、设置属性并保存文件代码示例结果截图4、遍历属性代码示例运行结果关联博客:《基于Java列举和说明常用的外部化配置的实现方式......
  • java写个爬虫抓取汽车之家车型配置参数
    前几天有个搞工程的表弟找我,问我什么车好,可以经常跑工地的,看上去又有面子。于是我挥动发财的小手,写一个爬虫程序,筛选并整理了一些数据,并附上下载的图片提供参考,看中了果断第二天提车到手。我是使用Java编写的爬虫程序,用于抓取汽车之家网站上的车型、车系、配置参数数据。以下是每行......
  • Java 大文件分片上传
    原理:前端通过js读取文件,并将大文件按照指定大小拆分成多个分片,并且计算每个分片的MD5值。前端将每个分片分别上传到后端,后端在接收到文件之后验证当前分片的MD5值是否与上传的MD5一致,待所有分片上传完成之后后端将多个分片合并成一个大文件,并校验该文件的MD5值是否与上传时传入的M......
  • 基于JavaWeb的电影推荐平台的设计与实现
     1.项目演示前端演示地址:http://96.8.117.232:8082/后端演示地址:http://96.8.117.232:8083/ (管理员账号:admin密码123456)访问慢是因为服务器是海外的,国内访问慢,便宜VPS凑合了2.项目介绍技术列表技术说明SpringBootWeb应用开发框架Vue3.xjava1.8my......
  • Java-研究HashMap的源码
    Java-研究HashMap的源码JDK版本:17类注释基于哈希表的Map接口实现。此实现提供了所有可选的映射操作,并允许null值和null键。(HashMap类大致相当于Hashtable,只不过它是不同步的并且允许null。)该类不保证映射的顺序;特别是,它不保证顺序随着时间的推移保持不变。此实现为基本操......
  • Java之Hashset的原理及解析
     4.数据结构4.1二叉树【理解】二叉树的特点二叉树中,任意一个节点的度要小于等于2节点:在树结构中,每一个元素称之为节点度:每一个节点的子节点数量称之为度二叉树结构图编辑4.2二叉查找树【理解】二叉查找树的特点二叉查找树,又称二叉排序树或者二叉搜索树每一个节点上最多有两......
  • springboot004旅游路线规划系统(Java毕业设计,附数据库和源码)
    第一章绪论1.1选题背景与研究意义随着社会的不断进步,在居民生活水平提高的同时,人们当前在生活的方方面面也越来越注重服务所带来的体验,随着近几年国家政策大力发展旅游业,旅游景点的建设越来也完善,旅游业的发展速度得到了显著的提升。各大旅行社、旅游景点都不断的推出新的活动计......
  • Java从入门到放弃(知识体系图谱)
    一、Java学习路线话不多说,先来一张劝退图!!!二、Java并发学习路线下面是一张关于Java并发编程的思维导图,大的方向可以分为三个部分:线程基础、理论基础、工具类JUC三、Java虚拟机一张关于JVM的思维导图,大的方向可以分为三个部分:字节码与类的加载、内存与垃圾回收、性能监......
  • 关于java的多态方法调用顺序的问题
    使用父类类型的引用指向子类的对象,该引用调用的师父类中定义的方法和变量,变量不能被重写(覆盖);如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;注意特殊情况,如果该父类引用所调用的方法参数列表未定义,就调用该父类的父类中查找,如果还没找到就强......
  • fusion accessR6本地挂载光驱的Java环境问题
    fusion access版本:R6外部操作环境:windows7准备制作的模版:windows7 旗舰版64 办公软件:office2010tools:ultraiso,firefox33,360万能网卡驱动本地挂载光驱的Java环境问题:安装完模板虚拟机后网卡无法识别,需要安装网卡驱动,由于没有IP地址,只能使用光驱本地挂载。解决方案:......