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));
    }
}

alt

程序运行的时间可能会由于处理器性能等原因,程序运行的时间可能也会有所不同。。

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]);
        }
    }
}

alt

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");
    }
}

alt

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()方法。。