System类与Runtime类

1.System类

System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的。因此,可以直接使用System类调用其属性和方法。

System类的常用方法:

     方法声明功能描述
static void exit(int status)该方法用于终止当前正在运行的Java虚拟机,其中参数status表示状态码,若状态码非0,则表示异常终止。
static long gc()运行垃圾回收器,并对垃圾进行回收
static long currentTimeMills()返回以毫秒为单位的当前时间
satic void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)从src引用的指定源数组复制到dest引用的数组,复制从指定的位置开始,到目标数组的指定位置结束
static Properties getProperties()取得当前的属性值
static String getProperty(String key)获取指定键描述的系统属性

  下面通过一些案例对表中的方法进行讲解:

  1. getProperties()方法

System类的getProperrties()方法y用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性以键值对的形式存在。

Example1:

import java.util.*;
public class Example1 {
	public static void main(String[] args) {
		//获取当前系统属性
		Properties properties = System.getProperties();
		//获取所有系统属性的key,返回Enumeration对象
        Enumeration propertyNames = properties.propertyNames();
        while(propertyNames.hasMoreElements()) {
        	//获取系统属性的键key
        	String key = (String) propertyNames.nextElement();
        	//获取当前键key对应的值value
        	String value = System.getProperty(key);
        	System.out.println(key+"--->"+value);
        }
	}

运行结果:

2.currentTimeMilllis()

currentTimeMilllis()方法返回一个long类型的值,该值表示当前时间与1970年1月1日0分0秒之间的时间差,单位是毫秒,习惯性的被称为时间戳;

Example2:
 


public class Example2 {
	public static void main(String[] args) {
		long startTime = System.currentTimeMillis();
        int sum = 0;
        for(int i=0;i<100000000;i++) {
        	sum+=i;
        }
        long endTime = System.currentTimeMillis();
        System.out.println("程序运行的时间为:"+(endTime-startTime)+"毫秒");
	}

}

运行结果:

3.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组。其中的参数具体作用如下:

  • src:表示源数组。
  • dest:表示目标数组。
  • srcPos:表示源数组中拷贝元素的起始位置。
  • destPos:表示拷贝到目标数组的起始位置。
  • length:表示拷贝元素的个数。

需要注意的是,在进行数组复制时,目标数组必须有足够的空间来存放拷贝的元素,否则会发生角标越界异常。

Example3:

public class Example3 {

	public static void main(String[] args) {
		int[] formArray = {101,102,103,104,105,106};
        int[] toArray = {201,202,203,204,205,206,207};
        System.arraycopy(formArray, 2, toArray, 3, 4);
        for(int i=0;i<toArray.length;i++) {
        	System.out.println(i+":"+toArray[i]);
        }
   }
}

运行结果:

System类还有两个常用方法,分别是gc()和exit(int status)方法。其中gc()方法用来启动Java的垃圾回收器,并且对内存中的垃圾对象进行回收。exit(int status)方法来终止当前正在运行的Java虚拟机,其中的参数status用于表示当前发生的异常状态,通常指定为0,表示正常退出,否则表示异常终止;

2.Runtime类

Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。每次使用Java命令启动虚拟机都对应一个Runtime实例 ,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化;

若想在程序中获得一个Runtime实例,只能通过下面的方式:

Runtime run = Runtime.getRuntime();

Example4:
 

public class Example4{
	public static void main(String[] args) {
		Runtime rt = Runtime.getRuntime();
		System.out.println("处理器的个数:"+rt.availableProcessors()+"个");
        System.out.println("空闲内存数量:"+rt.freeMemory()/1024/1024+"M");
        System.out.println("最大可用内存数量:"+rt.maxMemory()/1024/1024+"M");
	}

}

运行结果:

在例Example4中,通过Runtime.getRuntime()方式创建了一个Runtime的实例对象,并分别调用该对象的availableProcessors()方法,freeMemory()方法和maxMemory()方法。需要注意的是,由于每个人的机器配置不同,该例的打印结果可能不同。

Runtime类中提供了一个exec()方法,该方法用于执行一个dos命令,从而实现和在命令行窗口中输入dos命令同样的效果。例如,通过运行“notepad.exe”命令打开Windows自带的记事本程序.

Example5:

import java.io.*;
public class Example5{
	public static void main(String[] args) throws IOException{
		Runtime rt = Runtime.getRuntime();
		rt.exec("notepad.exe");
	}
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值