博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十九,System类
阅读量:6293 次
发布时间:2019-06-22

本文共 3720 字,大约阅读时间需要 12 分钟。

hot3.png

1.System类概述

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

2.成员变量

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

例如: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时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数.例如:

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类型,作用是获取系统属性信息.Properties是HashTable的子类,也就是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: aresxdy@gmail.com

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

转载于:https://my.oschina.net/u/2288529/blog/407038

你可能感兴趣的文章
255.Spring Boot+Spring Security:使用md5加密
查看>>
记录一款SQLite数据库管理软件
查看>>
将Oracle的语言从中文修改为英文
查看>>
matlab编译错误代码中英对照
查看>>
Python 元组
查看>>
hbase(ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet)
查看>>
[ZJOI2010]count 数字计数
查看>>
多校4 1001 Olympiad
查看>>
hdu1085 Holding Bin-Laden Captive!
查看>>
hdu4811 Ball
查看>>
Docker实践--搭建Yapi测试平台
查看>>
align-content 与 align-items 区别
查看>>
a链接中,name属性的应用
查看>>
Java精选笔记_多线程(创建、生命周期及状态转换、调度、同步、通信)
查看>>
java Session统计在线用户,并且显示在线用户
查看>>
spring boot集成jpa(mysql)
查看>>
js实现的玫瑰花
查看>>
大话设计模式之责任链模式
查看>>
记录libreoffice实现office转pdf(适用于windows、linux)
查看>>
Python爬虫入门这一篇就够了
查看>>