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.jb51.cc.com/java/lang/java_lang_system.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


@ 注解能被用来为程序元素( 类、 方法、 成员变量等) 设置元数据。 值得指出的是, 注解不影响程序代码的执行, 无论增加、 删除注解, 代码都始终如一地执行。 如果希望让程序中的注解在运行时起一定
@ 1、线性表的概念 线性表是最常见也是最简单的一种数据结构。简言之, 线性表是n个数据元素的有限序列。 其一般描述为: A={a1,a2,……an) 一个数据元素通常包含多个数据项, 此时每个数据元
简介 ArrayList是开发中使用比较多的集合,它不是线程安全的,CopyOnWriteArrayList就是线程安全版本的ArrayList。CopyOnWriteArrayList同样是通过数组
在 Java String类源码阅读笔记 里学习了String类的源码,StringBuilder、StringBuffer是经常拿来和String类做对比的两个类,可谓是“爱恨纠缠” ,这里我们继续
话不多说,先上图。 1、基本概念 欲说线程,必先说进程。 进程:进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程:线程是进程的一个执行路径,一个进程中至少有一个线程,进
@ 网络基础 计算机网络是指两台或更多的计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信,因为所有计算机都需要遵循同一种网络协议。 那什么是互联网呢?互联网是网络的网络(internet
JVM是面试中必问的部分,本文通过思维导图以面向面试的角度整理JVM中不可不知的知识。 先上图: 1、JVM基本概念 1.1、JVM是什么 JVM 的全称是 「Java Virtual Machine
@ 本文基于jdk1.8 HashMap采用 key/value 存储结构,每个key对应唯一的value。 在jdk1.7之前,HashMap 的内部存储结构是数组+链表。 在jdk1.8中 Has
@ Eclipse是很多Java开发者的第一个开发工具,尽管开源的Eclipse在一后起之秀的对比下,显得有些颓势,但是,Eclipse有着丰富的插件支持。选择合适的插件,Eclipse表示:老夫也能
@ 准备 LinkedList是基于双向链表数据结构实现的Java集合(jdk1.8以前基于双向循环链表),在阅读源码之前,有必要简单了解一下链表。 先了解一下链表的概念:链表是由一系列非连续的节点组
@ 写博客哪有刷逼乎有意思 1 写博客哪有刷逼乎有意思 2 写博客哪有刷逼乎有意思 3 类的加载、 连接和初始化 系统可能在第一次使用某个类时加载该类, 也可能采用预加载机制来加载某个类。 JVM 和
树结构是一类重要的非线性数据结构。直观来看,树是以分支关系定义的层次结构。树结构在客观世界广泛存在,如人类社会的族谱和各种社会组织机构都可用树来形象表示。 树在计算机领域中也得到广泛应用,尤以二叉树最
@ 本文基于jdk1.8 String类可谓是我们开发中使用最多的一个类了。对于它的了解,仅仅限于API的了解是不够的,必须对它的源码进行一定的学习。 一、前置 String类是Java中非常特别的一
随便打开一个招聘网站,看看对高级Java工程师的技能要求。 抛开其它的经验能力等等,单纯从技术,或者说知识上来讲,可以发现一些共通的地方。 Java基础 计算机基础 数据库,SQL/NoSQL 常用开
@ JDBC指Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。 1、JDBC典型用法 1.1、JDBC 4.2 常用接口和类简介
简介 ArrayList是基于数组实现的一种列表。 ArrayList继承体系如下: 图一:ArrayList继承体系 ArrayList实现了List, RandomAccess, Cloneabl
@ Java 的 IO 通过 java.io 包下的类和接口来支持, 在 java.io 包下主要包括输入、 输出两种 10 流, 每种输入、 输出流又可分为字节流和字符流两大类。 其中字节流以字节为
@ 使用断言 断言(Assertion)是一种调试程序的方式。在Java中,使用assert关键字来实现断言。 断言的概念 假设确信某个属性符合要求, 并且代码的执行依赖于这个属性。例如, 需要计算:
@ Java 程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能。 Java 提供了 System 类和 Runtime 类来与程序的运行平台进行交互。 Syste
@ Java 提供了一个操作 Set 、 List 和 Map等集合的类:Collections , 该工具类里提供了大量方法对集合元素进行排序、 查询和修改等操作,还提供了将集合对象设置为不可变、对