该文章Github地址:https://github.com/AntonyCheng/java-notes
在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!
上一章:由浅到深认识Java语言(22):Random类
35.System类
在 System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法;
System方法
返回类型 | 方法解释 |
---|---|
static void | arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
static String | clearProperty(String key) 移除指定键指示的系统属性。 |
static Console | console() 返回与当前 Java 虚拟机关联的唯一 Console 对象(如果有)。 |
static long | currentTimeMillis() 返回以毫秒为单位的当前时间。 |
static void | exit(int status) 终止当前正在运行的 Java 虚拟机。 |
static void | gc() 运行垃圾回收器。 |
static Map<String,String> | getenv() 返回一个不能修改的当前系统环境的字符串映射视图。 |
static String | getenv(String name) 获取指定的环境变量值。 |
static Properties | getProperties() 确定当前的系统属性。 |
static String | getProperty(String key) 获取指定键指示的系统属性。 |
static String | getProperty(String key, String def) 获取用指定键描述的系统属性。 |
static SecurityManager | getSecurityManager() 获取系统安全接口。 |
static int | identityHashCode(Object x) 返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。 |
static Channel | inheritedChannel() 返回从创建此 Java 虚拟机的实体中继承的信道。 |
static void | load(String filename) 从作为动态库的本地文件系统中以指定的文件名加载代码文件。 |
static void | loadLibrary(String libname) 加载由 libname 参数指定的系统库。 |
static String | mapLibraryName(String libname) 将一个库名称映射到特定于平台的、表示本机库的字符串中。 |
static long | nanoTime() 返回最准确的可用系统计时器的当前值,以毫微秒为单位。 |
static void | runFinalization() 运行处于挂起终止状态的所有对象的终止方法。 |
static void | runFinalizersOnExit(boolean value) 已过时。 该方法具有固有的不安全性。它可能对正在使用的对象调用终结方法,而其他线程同时正在操作这些对象,从而导致不正确的行为或死锁。 |
static void | setErr(PrintStream err) 重新分配“标准”错误输出流。 |
static void | setIn(InputStream in) 重新分配“标准”输入流。 |
static void | setOut(PrintStream out) 重新分配“标准”输出流。 |
static void | setProperties(Properties props) 将系统属性设置为 Properties 参数。 |
static String | setProperty(String key, String value) 设置指定键指示的系统属性。 |
static void | setSecurityManager(SecurityManager s) 设置系统安全性。 |
常用方法
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
复制数组;
package top.sharehome.Bag;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
int arr1[] = {1,2,3,4,5,6,7,8,9};
int arr2[] = {11,22,33,44,55,66,77,88,99};
System.arraycopy(arr1, 0, arr2, 0, 3);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
}
}
打印效果如下:
exit(int status)
虚拟机终止并且退出;
package top.sharehome.Bag;
public class Demo {
public static void main(String[] args) {
for (int i = 0; i < 1000000; i++) {
if (i == 10) {
System.exit(0);
}
System.out.println(i);
}
}
}
打印效果如下:
currentTimeMillis()
返回当前时间毫秒值;
package top.sharehome.Bag;
public class Demo {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
}
}
打印效果如下:
gc()
运行垃圾回收器;
垃圾回收器:Java 的一个特点就是有一条垃圾线程,负责去回收垃圾,之前的 c 语言是没有这个功能的,需要人为负责垃圾回收,但是很容易造成垃圾的遗漏,于是导致内存的溢出,但是这既是 Java 的优点,也是 Java 的缺点,因为无法人为控制垃圾的回收,而 gc()
仅仅是努力让垃圾回收更加彻底;
称为垃圾的条件:该对象没有被任何地引用时;
垃圾回收时最后调用的方法就是 Object 类中的 finalize()
;
package top.sharehome.Bag;
public class Demo {
public static void main(String[] args) {
/*
* String str = new String("ABC");
* str = null;
* 一开始str指向"ABC"
* 但是后面str又成为了空值,所以"ABC"就成了垃圾
*/
for (int i = 0; i < 100000; i++) {
A a = new A();
a = null;
System.gc();//强制启动垃圾回收器
}
}
}
class A{
//下面是 Object 里面的一个用于垃圾回收的方法--finalize(),当垃圾回收时会被调用一遍
//finalize()是当前对象在被垃圾回收器回收之前调用的方法,也就是说可以让当前对象继续被引用,以保证垃圾回收器不会回收当前对象
//当主函数循环次数少于100000次时,java自动的垃圾程序并不会启用
@Override
protected void finalize() throws Throwable {
System.out.println("被调用");
}
}
打印效果如下: