1.System类
System类我们并不陌生,我们在学习Java的时候,在打印结果时用到"System.out.println()",这句代码就使用到了System类。
System类定义了一些与系统相关的属性和方法,他所提供的方法都是静态的,使用的时候直接调用即可。。(可以去看源码)
1.1 System类的一些常用方法
方法申明 | 功能描述 |
---|---|
static void exit(int status) | 用于中止当前运行的Java虚拟机,其中参数status表示状态码,若状态码非0,则表示异常终止 |
static void gc() | 运行垃圾回收器,并对垃圾进行回收 |
static native long currentTimeMillis() | 返回以毫秒为单位的当前时间 |
static native void arraycopy(Object src, int srcPos,Object dest, int destPos,int length) | 从src引用的指定源数组拷贝到desc引用的数组,拷贝从指定的位置开始,到目标数组的指定位置结束 |
static Properties getProperty() | 获取当前系统的属性 |
static String getProperty(String key) | 获取指定键描述的系统属性 |
1.1.1 getProperty()方法
System类的getProperty()方法用于获取当前系统的全部属性,该方***返回一个Properties对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在。
import java.util.Properties;
import java.util.Set;
public class test {
public static void main(String[] args) {
Properties properties = System.getProperties();
System.out.println(properties);
Set<String> propertyNames = properties.stringPropertyNames();
for(String key:propertyNames){
Properties properties1 = System.getProperties();
System.out.println(key+"---> " + properties1);
}
}
}
1.1.2 currentTimeMillis()
currentTimeMillis()方法返回一个long类型的值,该值表示从当前时间到1970年1月1日0分0秒之间的时间差,单位时毫秒。通常也将该值称为时间戳。
public class test {
public static void main(String[] args) {
long l = System.currentTimeMillis();//循环开始的时间
int sum=0;
for(int i=0;i<1000000000;i++){
sum=sum+i;
}
long l1 = System.currentTimeMillis();//循环结束的时间
System.out.println("程序运行的时间:" + (l1-l));
}
}
程序运行的时间可能会由于处理器性能等原因,程序运行的时间可能也会有所不同。。
1.1.3 arraycopy(Object src, int srcPos,Object dest, int destPos,int length)
arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组,其中参数列表中的参数具体如下:
Object src:表示源数组
int srcPos:表示目标数组
Object dest:表示源数组中拷贝元素的起始位置
int destPos:表示拷贝到目标数组的起始位置
int length:表示拷贝元素的个数
注意: 在进行数组拷贝时,目标数组必须有有足够的空间来存放拷贝的元素,否则会发生角标越界异常。
public class test {
public static void main(String[] args) {
int[] srcArray={101,122,522,212,222,226}; //源数组
int[] descArray={255,512,551,556,821}; //目标数组
System.arraycopy(srcArray,2,descArray,0,3);
for (int i=0;i< descArray.length;i++){
System.out.println("i = " + i+":"+descArray[i]);
}
}
}
2.Runtime类
Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程。每次使用Java命令启动Java虚拟机时都会有一个对应的Runtime实例,并且只有一个实例,应用程序会通过该实例与其运行时的环境相连。运行程序不能创建自己的Runtime实例,若想在程序中获得一个Runtime实例,可以通过geRuntime()方法获取与之相关的Runtime对象。
public class test {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
System.out.println("处理器的个数:"+runtime.availableProcessors());
System.out.println("空闲内存大小:"+runtime.freeMemory()/1024/1024+"M");
System.out.println("最大可用内存大小:"+runtime.maxMemory()/1024/1024+"M");
}
}
Runtime类中提供了一个exec()方法,该方法用于执行一个dos命令,从而实现和在命令行窗口中输入dos命令同样的效果。例如通过运行"notepad.exe"命令打开一个Windows自带的记事本。
public class test {
public static void main(String[] args) throws IOException {
Runtime runtime = Runtime.getRuntime();
Process exec = runtime.exec("notepad.exe");
Thread.sleep(300);
exec.destroy();
}
}
Runtime类的exec()方***返回一个Process对象,该对象表示操作系统的一个进程,此处为notepad.exe进程,通过Process对象可以对产生的新进程进行管理,如关闭此进程只需调用destroy()方法。。