介绍
System静态类是属于java.lang包下的,主要用来实现系统的相关操作,通过该方法可以获得很多与系统和项目相关的内部属性值以及一些操作,下面简单介绍一下System下常见的静态方法。
1. System.in、System.out、System.err 静态变量
public final static InputStream in = null; // 标准输入流
public final static PrintStream out = null; // 标准输出流
public final static PrintStream err = null; // 标准异常流
上述三个静态变量中,System.out.println()
是最常用的,另外在获取键盘输入值时一般使用new Scanner(System.in)
来完成,而System.err
经常用来表示异常值的输出和打印,而在实际的项目开发中一般有统一的异常输出,因此该方法用的较少。
System.err.println打印示例:
2. System.currentTimeMillis 静态方法
该静态方法一般用来获取程序运行此处的时间毫秒值(时间戳),输出为一个long类型的值;而该方法的一般用来统计某段代码的执行时间长度,即在一段代码前后分别获取时间值,然后计算差值即可获得执行时长。
long time1 = System.currentTimeMillis();
{
// 业务代码
}
long time2 = System.currentTimeMillis();
long time = time2 - time1;
System.out.println("执行时间(ms):" + time);
类似的,还有获取纳秒时间的方式: System.nanoTime()
3. System.exit() 静态方法
用来终止当前的JVM程序运行,通常0表示正常退出,非0表示异常推出;该方法一般用在程序出现较严重异常的情况下才终止JVM,目前在项目开发过程中本人未使用过该方法。
System.exit(0); // 正常退出
System.exit(1); // 异常退出
4. System.getProperty() 静态方法
该方法主要用来获取与系统相关的属性值;具体使用的方式为根据输入的key获取对应的值,例如常见的user.dir
用来获取当前程序的运行目录,也是绝对路径;java.home
获取jdk安装目录;
使用方式
// 获得所有的属性值并且Propertires存储
Properties properties = System.getProperties();
// 获取所有的键值
Set<String> names= properties.stringPropertyNames();
// 打印所有键值对
names.forEach(name -> {
System.out.println(name + "->" +System.getProperty(name));
});
常见的键值解释:
键值 | 解释 |
---|---|
java.verslon | Java 运行时环境版本 |
java.vendor | Java 运行时环境供应商 |
java.vendor.url | Java 供应商的 URL |
java.home | Java 安装目录 |
java.vm.specification.version | Java 虚拟机规范版本 |
java.vm.specification.vendo | Java 虚拟机规范供应商 |
java.vm.specification.name | Java 虚拟机规范名称 |
jave.vm.version | Java 虚拟机实现版本 |
java.vm.vendor | Java 虚拟机实现供应商 |
java.vm.name | Java 虚拟机实现名称 |
jave.class.version | Java 类格式版本号 |
java.class.path | Java类格式版本号 |
java.library.path | 加载库时搜索的路径列表 |
java.io.tmpdir | 默认的临时文件路径 |
java.compiler | 要使用的 JIT 译器的名称一个或多个扩展目录的路径 |
java.ext.dirs | 一个或多个扩展目录的路径 |
os.name | 操作系统的名称 |
os.arch | 操作系统的架构 |
os.verslon | 操作系统的版本 |
file.separator | 文件分隔符(在 UNIX 系统中是“/”) |
path.separator | 路径分隔符(在UNIX 系统中是“:” ) |
line.separator | 行分隔符(在UNIX 系统中是“/n” ) |
user.name | 用户的账户名称 |
user. home | 用户的主目录 |
user.dir | 用户的当前工作目录 |
更进一步的可以获取系统变量信息
public static Map<String,String> getenv();
// 返回值
{
USERDOMAIN_ROAMINGPROFILE=LAPTOP-04UF7BNO,
...,
IDEA_INITIAL_DIRECTORY=C:\Users\Lenovo\Desktop
}
5. System.gc 静态方法
故名思意,该方法是用来主动执行jvm的垃圾回收,但是由于JVM本身已经存在了比较好的垃圾回收机制,一般情况下很少需要很少进行手动垃圾回收,因此该方法一般用的较少。
System.gc();
6. System.arraycopy() 静态方法
该方法主要用来实现数组的复制,其需要输入五个参数:src, srcPos, dest, destPos, length
参数解释:
- src:源数组,即将该数组的值复制到目标数组
- srcPos:源数组复制的起始位置,从0开始
- dest:目标数组,即将源数组值复制到该数组
- destPos:目标数组接收源数组复制的值的起始位置,从0开始
- length:源数组从srcPos起共复制的值的个数;注意:
src.length - srcPos
以及dest.length - destPos
都需要大于length才能使用;
char[] char1 = {'1', '2', '3', '4'};
char[] char2 = {'5', '6', '7', '8'};
System.arraycopy(char1, 0, char2, 0, 1);
//输出:1 6 7 8
System.out.println(Arrays.toString(char2));
以上内容整理自网络以及本人拙见,如有不足之处欢迎指正!