由浅到深认识Java语言(23):System类

该文章Github地址:https://github.com/AntonyCheng/java-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】

在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】& CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!

上一章:由浅到深认识Java语言(22):Random类

35.System类

System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法;

System方法

返回类型方法解释
static voidarraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
static StringclearProperty(String key) 移除指定键指示的系统属性。
static Consoleconsole() 返回与当前 Java 虚拟机关联的唯一 Console对象(如果有)。
static longcurrentTimeMillis() 返回以毫秒为单位的当前时间。
static voidexit(int status) 终止当前正在运行的 Java 虚拟机。
static voidgc() 运行垃圾回收器。
static Map<String,String>getenv() 返回一个不能修改的当前系统环境的字符串映射视图。
static Stringgetenv(String name) 获取指定的环境变量值。
static PropertiesgetProperties() 确定当前的系统属性。
static StringgetProperty(String key) 获取指定键指示的系统属性。
static StringgetProperty(String key, String def) 获取用指定键描述的系统属性。
static SecurityManagergetSecurityManager() 获取系统安全接口。
static intidentityHashCode(Object x) 返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。
static ChannelinheritedChannel() 返回从创建此 Java 虚拟机的实体中继承的信道。
static voidload(String filename) 从作为动态库的本地文件系统中以指定的文件名加载代码文件。
static voidloadLibrary(String libname) 加载由 libname 参数指定的系统库。
static StringmapLibraryName(String libname) 将一个库名称映射到特定于平台的、表示本机库的字符串中。
static longnanoTime() 返回最准确的可用系统计时器的当前值,以毫微秒为单位。
static voidrunFinalization() 运行处于挂起终止状态的所有对象的终止方法。
static voidrunFinalizersOnExit(boolean value) 已过时。 该方法具有固有的不安全性。它可能对正在使用的对象调用终结方法,而其他线程同时正在操作这些对象,从而导致不正确的行为或死锁。
static voidsetErr(PrintStream err) 重新分配“标准”错误输出流。
static voidsetIn(InputStream in) 重新分配“标准”输入流。
static voidsetOut(PrintStream out) 重新分配“标准”输出流。
static voidsetProperties(Properties props) 将系统属性设置为 Properties 参数。
static StringsetProperty(String key, String value) 设置指定键指示的系统属性。
static voidsetSecurityManager(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("被调用");
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下一章:由浅到深认识Java语言(23):System类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值