Java Review (十九、基础类库----系统相关类)

简介: Java Review (十九、基础类库----系统相关类)

 

文章目录

Java 程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能。 Java 提供了 System 类和 Runtime 类来与程序的运行平台进行交互。

System 类

System 类代表 当 前 Java 程序的运行平台,程序不能创建 System 类的对象, System 类提供了 一  些类变量和类方法,允许直接通过 System 类来调用这些类变量和类方法。System  类提供了代表标准输入、标准输出和错误输出的类变量,并提供了 一些静态方法用于访问环境变量、系统属性的方法,还提供了加载文件和动态链接库的方法 。  下面程序通过 System 类来访问操作的环境变量和系统属性。

SystemTest.java

public test{
  public class SystemTest {
  public static void main(String[] args) throws Exception{
        // 获取系统所有的环境变量
        Map<String,String> env = System.getenv ();
        for (String name : env.keySet()){
           System.out.println(name + " ---> " + env .get(name)) ;
        }
       //获取指定环境变量的值
       System .out .println(System.getenv( "JAVA_HOME ")) ;
       //获取所有的系统属性
       Properties props = System .getProperties();
       //将所有的系统属性保存到 props.txt 文件中
       props.store(new FileOutputStream( "props.txt"),"System Properties ");
       //输出特定的系统属性
       System.out.println(System .getProperty( "os.name"));
     }
}

运行结果

该程序运行结束后还会在当前路径下生成一个 props.txt 文件 , 该文件中记录了当前平台的所有系统属性 。

System类方法

方法 描述
static void gc() 通知系统进行垃圾回收
runFinalization() 通知系统进行资源清理
static long currentTimeMillis() 此方法返回当前时间,单位为毫秒
nanoTime() 此方法返回最精确的可用系统计时器的当前值,单位毫微秒
static int identityHashCode(Object x) 此方法返回相同的哈希代码为给定的对象会由默认hashCode方法(返回),给定对象的类是否重写hashCode()
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 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 void load(String filename) 此方法加载使用从本地文件系统中的指定文件名作为一个动态库中的代码文件。
static void loadLibrary(String libname) 此方法加载libname指示参数指定的系统库。
static String mapLibraryName(String libname) 此方法映射库名称为表示本机库的平台特定的字符串。
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) 此方法设置系统的安全性。

API:java.lang.System

Runtime 类

Runtime 类代表 Java 程序 的运行时环境,每个 Java 程序都有 一个与之对应的 Runtime 实例 ,  应程序通过该对象与其运行时环境相连。应用程序不能创建自己的 Runtime 实例 , 但可以通过 getRuntime()方法获取与之关联的  Runtime对 象。

与 System 类似的是, Runtime 类也提供了 gc()方法和 runFinalization()方法来通知系统进行垃圾回收  、清理系统资源 , 并提供了 load(String filename)和 loadLibrary(String  libname)方法来加载文件和动态链接库 。

Runtime 类代表 Java 程序的运行 时环境,可以访问JVM的相关信息,如处理器数量 、 内存信息等。

如下程序所示:

RuntimeTest.java

public class RuntimeTest {
  public static void main(String[] args) {
    //获取 Java 程序关联的运行时对象
    Runtime rt = Runtime . getRuntime() ;
    //获取 JVM 相关信息
    System.out.println (" 处理器数量 "+ rt.availableProcessors());
    System.out.println (" 空 闲 内存数: "+ rt. freeMemory () ) ;
    System.out.println ("总 内 存数:"+ rt . totalMemory());
    System.out.println("可用最大 内 存数:"+ rt . maxMemory());
  }
}

Runtime 类还有一个功能 它可以直接单独启动一个进程来运行操作系统的命令,如下程序所示 :

ExecTest.java

public class ExecTest {
  public static void main(String[] args) throws Exception{
    Runtime rt = Runtime .getRuntime () ;
    rt.exec ("notepad.exe") ;
  }
}

API:java.lang.Runtime


参考:

【1】:《疯狂Java讲义》

【2】:https://www.yiibai.com/java/lang/java_lang_system.html


目录
打赏
0
0
0
0
21
分享
相关文章
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
24 6
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
37 7
|
2月前
|
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
183 57
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
85 8
|
2月前
|
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
98 17
|
2月前
|
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
150 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等