System类是包含一些有用的类字段和方法。
它是不能被实例化的(应为是final修饰的)
System类提供的是System包括标准输入,标准输出和错误输出流;访问外部定义的属性和环境变量;一种加载文件和库的方法;以及用于快速复制阵列的一部分的实用方法。
System当中常用的方法
1. arraycopy()方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Object src:表示原数组
int srcPos:表示原数组开始复制的位置
Object dest: 表示新数组
int destPos:表示型数组开始赋值的位置
int length:表示原数组共复制几位
这个方法在当时看String、StringBuffer和StringBuild源码的时候,就会发现都是在大量的调用这个方法的。
是因为在这个方法是直接调用的是最底层native方法的。效率是最高的了。
代码演示一下:
public class Demo01 {
public static void main(String[] args) {
int[] a = {1,2,3,4,5};
int[] b = new int[10];
System.arraycopy(a,0,b,0,a.length);
System.out.println(Arrays.toString(b));
}
}
2. currentTimeMillis()方法
public static long currentTimeMillis()
这个方法返回的是时间,返回的时间是以毫秒为单位的,所以它的返回值类型就规定为long类型。
在这里需要注意一下,虽然返回值的时间单位为毫秒,但该值的粒度取决于底层操作系统。 例如,许多操作系统以几十毫秒为单位测量时间。
这个返回具体的返回结果是:自1970年1月1日起到当前的世界差异
底层源码:(直接调用了系统的方法,得到时间)
这个方法主要的用处就是我们在之后的特别算法哪里,通过这个方法得到一块语句块的执行时间,从而方便让我们对自己的代码进行优化。
代码演示:
public class Demo02 {
public static void main(String[] args) {
long oldTime = System.currentTimeMillis(); //代码运行前获得一个时间
//在这里就是要测试的代码执行块
int a = 0;
for (int i = 0; i < 1000000; i++) {
a += i;
}
//最后利用前后时间差来得到代码运行时间
System.out.println(System.currentTimeMillis() - oldTime);
}
}
3. exit(int status)方法
public static void exit(int status)
传入的参数为状态码。
退出当前虚拟机。就是这个方法一执行,直接关闭虚拟机,就是强制退出程序。
先看一下源码:
在这说明一下,这个方法调用的Runtime类方法是从不正常执行的。所以必然停止虚拟机的。
代码演示:
public class Demo03 {
public static void main(String[] args) {
System.out.println("Xin");
System.out.println("Chen");
System.out.println("Yu");
System.exit(0);
System.out.println("Chen");
System.out.println("Xi");
}
}
4. gc()方法
public static void gc()
这玩意主要是用在垃圾收集的哪里,在后面的jvm哪里主要有说,这个想要说清除,首先要了解到java虚拟机的垃圾收集机制。
而调用gc方法就表明。java虚拟机就是尽力将所有的判断为垃圾进行回收。
最后在说一下System.in和System.out的区别:
public static final InputStream in
“标准”输入流。 表示该流已经打开,准备提供输入数据。
通常,该流对应于键盘输入或由主机环境或用户指定的另一个输入源。
public static final PrintStream out
“标准”输出流。 此流表示已经打开并准备好接受输出数据。
通常,此流对应于显示输出或由主机环境或用户指定的另一个输出目标。
对于简单的独立Java应用程序,编写一行输出数据的典型方法是:
System.out.println(data)
最后在这再给大家看一下api当中的System当中的方法
这篇文章写的也比较简单,我觉的在System这里的方法都比较简单,但是大家在看的时候有什么问题的话,欢迎大家在评论区讨论。有什么好的建议,我也会在后面进行补充之类的。