System类
简单了解System类的使用和常用方法,System类是一些与系统相关的属性和方法的集合,而且在System类中所有的属性都是静态的,要想引用这些属性和方法,直接使用System类调用即可。
编号 | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public static void exit(int status) | 静态方法 | 系统退出,如果status为0就表示退出 |
2 | public static void gc() | 静态方法 | 运行垃圾收集机制,调用的是Runtime类中的gc方法。 |
3 | public static long currentTimeMillis() | 静态方法 | 返回以毫秒为单位的当前时间 |
4 | public static void arraycopy(Object src,int srcPos, Object dest,int desPos,int length) | 静态方法 | 数组拷贝操作 |
5 | public static Properties getProperties() | 静态方法 | 取得当前系统的全部属性 |
6 | public static String getProperty(String key) | 静态方法 | 根据键值取得属性的具体内容 |
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 虚拟机实现名称 |
java.specification.version | Java 运行时环境规范版本 |
java.specification.vendor | Java 运行时环境规范供应商 |
java.specification.name | Java 运行时环境规范名称 |
java.class.version | Java 类格式版本号 |
java.class.path | Java 类路径 |
java.library.path | 加载库时搜索的路径列表 |
java.io.tmpdir | 默认的临时文件路径 |
java.compiler | 要使用的 JIT 编译器的名称 |
java.ext.dirs | 一个或多个扩展目录的路径 |
os.name | 操作系统的名称 |
os.arch | 操作系统的架构 |
os.version | 操作系统的版本 |
file.separator | 文件分隔符(在 UNIX 系统中是“/”) |
path.separator | 路径分隔符(在 UNIX 系统中是“:”) |
line.separator | 行分隔符(在 UNIX 系统中是“/n”) |
user.name | 用户的账户名称 |
user.home | 用户的主目录 |
user.dir | 用户的当前工作目录 |
来源JDK的帮助文档
package com.shxt.demo04;public class Demo02 { public static void main(String[] args) { System.out.println("java_vendor:" + System.getProperty("java.vendor")); System.out.println("java_vendor_url:" + System.getProperty("java.vendor.url")); System.out.println("java_home:" + System.getProperty("java.home")); System.out.println("java_class_version:" + System.getProperty("java.class.version")); System.out.println("java_class_path:" + System.getProperty("java.class.path")); System.out.println("os_name:" + System.getProperty("os.name")); System.out.println("os_arch:" + System.getProperty("os.arch")); System.out.println("os_version:" + System.getProperty("os.version")); System.out.println("user_name:" + System.getProperty("user.name")); System.out.println("user_home:" + System.getProperty("user.home")); System.out.println("user_dir:" + System.getProperty("user.dir")); System.out.println("java_vm_specification_version:" + System.getProperty("java.vm.specification.version")); System.out.println("java_vm_specification_vendor:" + System.getProperty("java.vm.specification.vendor")); System.out.println("java_vm_specification_name:" + System.getProperty("java.vm.specification.name")); System.out.println("java_vm_version:" + System.getProperty("java.vm.version")); System.out.println("java_vm_vendor:" + System.getProperty("java.vm.vendor")); System.out .println("java_vm_name:" + System.getProperty("java.vm.name")); System.out.println("java_ext_dirs:" + System.getProperty("java.ext.dirs")); System.out.println("file_separator:" + System.getProperty("file.separator")); System.out.println("path_separator:" + System.getProperty("path.separator")); System.out.println("line_separator:" + System.getProperty("line.separator")); }}复制代码
Runtime类
运行时,是一个封装了JVM进程的类。每一个JAVA程序实际上都是启动了一个JVM进程,那么每一个进程都是对应这一个Runtime实例,其实例是由JVM为其初始化的。
编号 | 方法名称 | 类型 | 描述 |
---|---|---|---|
1 | public static Runtime getRuntime() | 普通方法 | 用于取得Runtime类的实例 |
2 | public long freeMemory() | 普通方法 | 用于返回Java虚拟机中的空闲内存 |
3 | public long maxMemory() | 普通方法 | 返回JVM的最大内存量 |
4 | public void gc() | 普通方法 | 运行垃圾回收器,释放空间 |
5 | public Process exec(String command) throws IOException | 普通方法 | 执行本机命令 |
package com.shxt.demo04;public class Demo03 { public static void main(String[] args) { Runtime run = Runtime.getRuntime(); // 通过Runtime类的静态方法进行实例化操作 System.out.println("JVM最大内存量:" + run.maxMemory()) ; // 观察最大的内存,根据机器的不同,环境也会有所不同 System.out.println("JVM空闲内存量:" + run.freeMemory()) ; // 取得程序运行的空闲内存 String str = "Hello " + "World" + "!!!" +"\t" + "Welcome " + "To " + "SHXT" + "~" ; System.out.println(str) ; for(int x=0;x<1000;x++){ str += x ; // 循环修改内容,会产生多个垃圾 } System.out.println("操作String之后的,JVM空闲内存量:" + run.freeMemory()) ; run.gc() ; // 进行垃圾收集,释放空间 System.out.println("垃圾回收之后的,JVM空闲内存量:" + run.freeMemory()) ; }}/* 运行结果为: JVM最大内存量:3782737920 JVM空闲内存量:249990240 Hello World!!! Welcome To SHXT~ 操作String之后的,JVM空闲内存量:239336736 垃圾回收之后的,JVM空闲内存量:253339448*/复制代码
示例1:调用记事本命令
package com.shxt.demo04;public class Demo04 { public static void main(String[] args) { Runtime r = Runtime.getRuntime(); Process p = null; try{ p = r.exec("notepad"); } catch (Exception e) { System.out.println("Error executing notepad."); } }}复制代码
示例2:PING地址
package com.shxt.demo04;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.InputStreamReader;public class Demo05 { public static void main(String[] args) { String cmd = "ping www.baidu.com"; Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象 try { Process p = run.exec(cmd);// 启动另一个进程来执行命令 BufferedInputStream in = new BufferedInputStream(p.getInputStream()); BufferedReader inBr = new BufferedReader(new InputStreamReader(in,"GB2312")); String lineStr; while ((lineStr = inBr.readLine()) != null) //获得命令执行后在控制台的输出信息 System.out.println(lineStr);// 打印输出信息 //检查命令是否执行失败。 if (p.waitFor() != 0) { if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束 System.err.println("命令执行失败!"); } inBr.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } }}复制代码