System、Runtime对象
一、System对象:
1、System对象即系统对象,描述系统的信息,可以在jvm加载时动态加载一些信息,System类中的方法和属性都是静态的。 获取系统属性信息用Properties getProperties()方法。
2、 因为properties是Hashtable的子类,也就是Map集合的一个子类对象。因此可以通过map的方法取出该集合中的元素。
示例:
<span style="font-size:12px;">import java.util.Properties;
/**
* System:类中方法和属性都是静态的
* out:标准输出,默认是控制台
* in:标准输入,默认是键盘
*
* 描述系统一些信息
* 获取系统属性信息:Properties getProperties();
* @author Administrator
*
*/
public class SystemTest
{
public static void main(String[] args)
{
Properties prop = System.getProperties();
//因为properties是Hashtable的子类,也就是Map集合的一个子类对象。
//那么可以通过map的方法取出该集合中的元素。
//该集合中存储都是字符串,没有泛型定义。
//获取所有属性信息
for (Object obj : prop.keySet())
{
String value = (String) prop.get(obj);
System.out.println(obj + ": " + value);
}
//如何在系统中定义一下特有的信息呢?
System .setProperty("mykey", "myvalue");
//获取指定属性信息
String value = System.getProperty("os.name");
System.out.println("value" + value);
//可不可以在jvm启动时,动态加载一些属性信息呢?
String v = System.getProperty("haha");
System.out.println("v" + v);
}
}</span>
二、Runtime对象
1.概述:运行时刻是指一个程序在运行(或者在被执行)的状态。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。
2.该类并没有提供构造函数,说明不可以new对象,那么会直接想到该类中的方法都是静态的。但发现该类中还没有非静态方法,说明该类肯定会提供获取本类对象的方法,而且该方法是静态的,并返回值类型是本类类型(该方法是static Runtime getRuntime();) 由此特点可知该类使用了单例设计模式完成。
3.特点:
A、Runtime类封装了运行时的环境。每个 Java应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。
B、一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。
C、一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。
D、当Applet和其他不被信任的代码调用任何Runtime方法时,常常会引起SecurityException异常。
4.示例:
public class RuntimeTest
{
public static void main(String[] args) throws Exception
{
Runtime r = Runtime.getRuntime();
Process p = r.exec("notepad.exe C:\\out.txt");
Thread.sleep(4000);
p.destroy();//杀死进程
}
}