文章目录
1概念
System类代表系统,系统的很多属性和控制方法都放置在该类的内部,该类位于java.lang包
由于该类的构造方法是private的,所以无法创建类的对象,也就是无法实例化该类,其内部的成员方法和成员变量都是static的,所以可以很方便的调用他。
System中包含了in,out,err三个成员变量,分别代表标准流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)
public final static InputStream in;
//标准输入流
public final static PrintStream out;
//标准输出流
public final static PrintStream err;
//标准错误流
有此可见,System中的out和in都不是内部类,是成员变量,out是PrintStream的final static来修饰的变量,所以,out是可以调用printStream中的方法的,例如:System.out.println()中的println就是printStream中的一种输出方法。
2.Sytem中常用的方法
2.1 System.currentTimeMillis();
返回毫秒数,这个就比较简单了,和Date类中的getTime方法一样。
获取系统当前毫秒值(public static long currentTimeMillis())
package com.company;
import java.util.*;
public class Main{
public static void main(String[] args) {
long start = System.currentTimeMillis();
for(int i = 1;i < 10000000;i ++){}
long end = System.currentTimeMillis();
System.out.println(end-start);
}
}
2.2 结束正在运行的Java程序(public staitc void exit(int status))
参数传入一个数字即可。通常传入0记为正常状态,其它为异常状态。
public class SystemDemo {
public static void main(String[] args) {
int counts = 0;
while(true) {
System.out.println("yinzhengjie");
if(counts==5) {
System.exit(0);
}
counts++;
}
}
}
2.3 垃圾回收器(public static void gc())
用来运行JVM中的垃圾回收器,完成内存中垃圾的清除。
class Student{
//清除垃圾时,会默认调用被清空对象的finalize方法。
public void finalize() {
System.out.println("垃圾已经被收取啦!");
}
}
public class SystemDemo {
public static void main(String[] args) {
new Student();
new Student();
new Student();
new Student();
new Student();
System.gc();
}
}
/*
以上代码执行结果如下:(输出结果不一定是三行,有可能是0行或者5行哟!每次运行的结果几乎是不一致的)
垃圾已经被收取啦!
垃圾已经被收取啦!
垃圾已经被收取啦!
2.4 确定当前的系统属性(public static getPropertiesgetProperties())
public class SystemDemo {
public static void main(String[] args) {
System.out.println(System.getProperties());
}
}
常用的有:
os.arch | 操作系统的架构 |
---|---|
os.version | 操作系统的版本 |
file.separator | 文件分隔符(在 UNIX 系统中是“/”) |
path.separator | 路径分隔符(在 UNIX 系统中是“:”) |
line.separator | 行分隔符(在 UNIX 系统中是“/n”) |
user.name | 用户的账户名称 |
user.home | 用户的主目录 |
user.dir | 用户的当前工作目录 |
2.5 System.arraycopy(a,b,c,d,e);
其中,a是被复制的数组,b是复制的起始位置,c是复制到的数组,d是复制到这个数组的起始位置,e是复制到这个数组的结束位置。
public class SystemDemo {
public static void main(String[] args) {
int[] src = {1,22,333,4444,5555,666666,7777777};
int[] dest = {10,20,30};
System.arraycopy(src, 2, dest, 0, 2);
for(int i=0;i<dest.length;i++) {
System.out.println(dest[i]);
}
}
}
/*
以上代码执行结果如下:
333
4444
30
*/