十九,System类

1.System类概述

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang.由于该类的构造方法是private,所以无法创建该类的对象,也就是无法实例化该类.其内部的成员变量和成员方法都是static,所以也可以很方便的进行调用.

2.成员变量

System类内部包含inouterr三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器).

例如:System.out.println(“Test”);

该行代码的作用是将字符串”Test”输出到系统的标准输出设备上,也就是显示在屏幕上.

后续在学习完IO相关的知识以后,可以使用System类中的成员方法改变标准输入流等对应的设备,例如可以将标准输出流输出的信息输出到文件内部,从而形成日志文件等.

3.成员方法

System类中提供了一些系统级的操作方法,这些方法实现的功能分别如下:

3.1 arraycopy方法

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

该方法的作用是数组拷贝,也就是将一个数组中的内容复制到另外一个数组中的指定位置,由于该方法是native方法,所以性能上比使用循环高效.

使用示例:

int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);

该代码的作用是将数组a,从下标为1开始,复制到数组b从下标3开始的位置,总共复制2.也就是将a[1]复制给b[3],a[2]复制给b[4],这样经过复制以后数组a中的值不发生变化,而数组b中的值将变成{0,0,0,2,3}.

3.2 currentTimeMillis方法

public static long currentTimeMillis()

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)197011000秒所差的毫秒数.例如:

long l = System. currentTimeMillis();

则获得的将是一个长整型的数字,该数字就是以差值表达的当前时间.

使用该方法获得的时间不够直观,但是却很方便时间的计算.例如,计算程序运行需要的时间则可以使用如下的代码:

long start = System. currentTimeMillis();
for(int i = 0;i < 100000000;i++){
    int a = 0;
}

long end = System. currentTimeMillis();
long time = end – start;

则这里变量time的值就代表该代码中间的for循环执行需要的毫秒数,使用这种方式可以测试不同算法的程序的执行效率高低,也可以用于后期线程控制时的精确延时实现.

3.3 exit方法

public static void exit(int status)

该方法的作用是退出程序.其中status的值为0代表正常退出,非零代表异常退出.使用该方法可以在图形界面编程中实现程序的退出功能等.

3.4 gc方法

public static void gc()

调用System.gc()实际上就相当于调用了Runtime.getRuntime().gc().

该方法的作用是请求系统进行垃圾回收.至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况.

3.5 getProperty方法

public static String getProperty(String key)

该方法的作用是获得系统中属性名为key的属性对应的值.系统中常见的属性名以及属性的作用如下表所示.

java.version //Java 运行时环境版本

java.home //Java 安装目录

os.name //操作系统的名称

os.version //操作系统的版本

user.name //用户的账户名称

user.home //用户的主目录

user.dir //用户的当前工作目录

例如:

String osName = System.getProperty(“os.name”);
String user = System.getProperty(“user.name”);
System.out.println(“
当前操作系统是:” + osName);
System.out.println(“
当前用户是:” + user);

使用该方法可以获得很多系统级的参数以及对应的值.

4.System类应用

4.1 finalize()方法

Object有一个方法,该方法在对象被回收前调用.

protected void finalize() throws Throwable

示例:

package com.ares.systemdemo;
class Person {
	private String name;
	private int age;
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	public String toString() {
		return "姓名:" + this.name + ",年龄:" + this.age;
	}

	public void finalize() throws Throwable {
   //覆写finalize方法.
		System.out.println("我被回收了,我完蛋了...(" + this + ")");
	}
}
public class SystemDemo {
	public static void main(String[] args) {
		Person per = new Person("张三", 99);
		per = null; // 取消引用
		System.gc();  // 强制进行垃圾收集
	}
}

4.2获取系统属性信息

out是标准输出,默认是控制台. in是标准输入,默认是键盘. getProperties 返回Properties类型,作用是获取系统属性信息.PropertiesHashTable的子类,也就是Map集合中的一个子类,可以 通过map的方法取出该集合中的子类.

示例:

import java.util.Properties;
    public class SystemDemo {
        public static void main(String[] args){
            Properties pro = System.getProperties();

            //获取所有属性信息
            for(Object obj:pro.keySet()){
                String value  = (String) pro.get(obj);

                System.out.println(value);
            }
            //获取制定属性信息
            String value = System.getProperty("os.name");
            System.out.println(value);
            //自定义属性信息
            System.setProperty("football", "good");     
            System.out.println(System.getProperty("football"));
            //在jvm启动时,动态加载属性信息.



参考:
http://www.cnblogs.com/xuhuan/articles/1522212.html
http://www.2cto.com/kf/201504/390428.html



20150428


JAVA学习笔记系列

--------------------------------------------

                    联系方式

--------------------------------------------

        Weibo: ARESXIONG

        E-Mail: [email protected]

------------------------------------------------

你可能感兴趣的:(properties,System类,finalize方法)