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


目录
相关文章
|
10天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
27天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
47 17
|
19天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
23天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
76 4
|
24天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
45 2
|
25天前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
61 3
|
28天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
1月前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
1月前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
29天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
28 1