【Java常用类】System类与Runtime类

63 篇文章 4 订阅

一:System类

System类提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类 调用即可。

System类的常用方法如下:

1.getProperties()方法:

System类的getProperties()方法用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在。接下来通过一个案例来演示getProperties()方法的使用:

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

}

2:currentTimeMillis

currentTimeMillis()方法返回一个long类型.作用:返回当前的时间(单位为毫秒)

例:

public class Demo03 {
	public static void main(String[] args) {
		long startTime = System.currentTimeMillis();//循环开始是的当前时间
		int sum = 0;
		for (int i = 0;i<10000000;i++) {
			sum+=i;
		}
		long endTime = System.currentTimeMillis();//循环结束后的当前时间
		System.out.println("程序运行时间为:"+(endTime-startTime)+"毫秒");
	}

}

运行结果:

由于处理器的性能问题,程序运行的时间也会有所不同

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

arraycopy()方法是,将一个数组快速拷贝到另一个数组,其中参数列表具体说明如下:

src:表示源数组。

dest:表示目标数组

srcPos:表示源数组中拷贝元素的起始位置。

destPos:表示拷贝到目标数组的起始位置。

length:表示拷贝元素的个数。

例如:

public class Demo04 {
	public static void main(String[] args) {
		int[] srcArray = {101,102,103,104,105,106};//源数组
		int[] destArray = {201,202,203,204,205};//目标数组
		System.arraycopy(srcArray, 2, destArray, 0, 4);//拷贝数组元素
		//打印目标数组中的元素
		for(int i=0;i<destArray.length;i++) {
			System.out.println(i+":"+destArray[i]);
		}
	}

}

运行结果;

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

二:Runtime 类

Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程。每次使用java命令启动Java虚拟机时都会对应一个Runtime实例,并且只有一个实例,应用程序会通过该实例与其运行时的环境相连。应用程序不能创建自己的Runtime实例,若想在程序中获得一个Runtime实例,可以通过getRuntime()方法获取与之相关的Runtime对象,
具体方式如下:

Runtime run = Runtime.getRuntime();

由于Runtime类封装了Java虚拟机进程,因此,可以通过该类的实例对象来获取当前虚拟机的相关性息。

例:

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

}

运行结果:

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

例:

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

}

运行结果;


 

 Runtime类的exec()方法会返回一个Process对象,该对象表示操作系统的一个进程,此处为notepad. exe进程,通过Process 对象可以对产生的新进程进行管理,如关闭此进程只需调用destroy()方法即可。

如:

public class Demo08 {
	public static void main(String[] args) throws Exception {
		Runtime rt = Runtime.getRuntime();
		Process process = rt.exec("notepad.exe");
		Thread.sleep(3000);
		process.destroy();
	}

}

我们可以看到记事本在3秒后自动关掉。

System类和Runtime类就介绍到这里。

感谢观看!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值