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

news2024/12/27 16:00:26

该文章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 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类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智达方通全面预算管理系统,为企业带来更可靠的交付

对于几乎所有企业来说&#xff0c;确定提供哪些产品或服务、如何制定销售计划和配备业务以及平衡定价和预算成本以获得持续上升的利润是最基础的工作&#xff0c;对这些基础工作的评估过程可以直接决定企业未来的成功与否。然而&#xff0c;在如今这个数据激增、高速运转的新经…

【简单无脑】自动化脚本一键安装虚拟机下的MySQL服务

虚拟机安装MySQL服务 MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS)。可以在Linux操作系统下运行&#xff0c;支持多种引擎和标准的SQL语言&#xff0c;是大数据学习中和虚拟机配置中至关重要的一项服务。 但是MySQL在虚拟机中的安装步骤十分复杂繁琐&#xff0c;博…

典型内存溢出场景

说说几种典型的导致内存溢出的情况&#xff1a; 1.线程池导致内存溢出。 使用Executors.newFixedThreadPool(10);创建的线程池对象使用的工作队列是一个无上限的队列&#xff0c;队列数没有上限&#xff0c;任务数过多&#xff0c;导致队列塞满&#xff0c;内存溢出 使用了Ex…

星云小窝项目1.0——项目介绍(一)

星云小窝项目1.0——项目介绍&#xff08;一&#xff09; 文章目录 前言1. 介绍页面2. 首页2.1. 游客模式2.2. 注册用户后 3. 星云笔记3.1. 星云笔记首页3.2. 星云笔记 个人中心3.2. 星云笔记 系统管理3.3. 星云笔记 文章展示3.3. 星云笔记 新建文章 4. 数据中心5. 交流评论6. …

GPT模型部署后续:聊天机器人系统的扩展与优化

一、多轮对话支持 为了实现多轮对话支持&#xff0c;我们需要维护用户的会话上下文。这可以通过在服务器端使用一个字典来存储会话状态实现。 目录 一、多轮对话支持 下面是一个简单的扩展例子&#xff1a; 二、性能优化 三、用户界面与交互优化 下面是一个简单的HTML示例&…

springboot3使用​自定义注解+Jackson优雅实现接口数据脱敏

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 内容简介 实现思路 实现步骤 1.自定义脱敏注解 2.编写脱敏策略枚举类 3.编写JSON序列化实现 4.编写测…

数据在内存里的存储(1)【整数在内存中的存储】【什么是大小端】

一.整数在内存里的存储 我们都知道&#xff0c;关于整数的二进制表示方法有三种&#xff0c;原码&#xff0c;反码和补码。而正数的原码&#xff0c;反码&#xff0c;补码都相等。而负数的表示方法各不相同。原码&#xff1a;直接将数值按照正负数的形式翻译成二进制得到的就是…

【Unity】uDD插件抓屏文字显示不清晰怎么办?

【背景】 之前介绍过用一款简称uDD&#xff08;uDesktopDuplication&#xff09;的开源插件抓取电脑桌面。整体效果不错&#xff0c;看电影很流畅。但是当切换到文档&#xff0c;或者仔细看任何UI的文字部分时&#xff0c;发现就模糊了。 【分析】 由于是依托于Canvas上的Te…

备考的秘密武器:一招清除笔迹,试卷、表格再利用!

擦除试卷笔迹的功能可以用于多种场合&#xff0c;尤其适用于教育领域和文档管理工作。以下是一些具体的应用场景&#xff1a; 教学复习&#xff1a;教师可以使用这个功能来清除已批改的试卷上的笔迹&#xff0c;以便重复使用试卷进行讲解或作为模板设计新的题目。 资料归档&a…

Linux中ifconfig无法查看ip解决

安装net-tool插件 sudo yum install net-tools

VUE中添加视频播放功能

转载https://www.cnblogs.com/gg-qq/p/10782848.html 常见错误 vue-video-player下载后‘vue-video-player/src/custom-theme.css‘找不到 解决方法 卸载原来的video-play版本 降低原来的版本 方法一 npm install vue-video-player5.0.1 --save 方法二 或者是在pack.json中直…

力扣刷题Days25-45. 跳跃游戏 II(js)

目录 1&#xff0c;题目 2&#xff0c;代码 贪心算法正向查找 3&#xff0c;学习 解题思路 具体代码处理 数组遍历的最后边界的处理&#xff1a; 1&#xff0c;题目 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向…

华为ensp中vrrp虚拟路由器冗余协议 原理及配置命令

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言————— VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由器冗余协议&#xff0…

八大排序算法之希尔排序

希尔排序是插入排序的进阶版本&#xff0c;他多次调用插入排序&#xff0c;在插入排序上进行了改造&#xff0c;使其处理无序的数据时候更快 核心思想&#xff1a;1.分组 2.直接插入排序&#xff1a;越有序越快 算法思想&#xff1a; 间隔式分组&#xff0c;利用直接插入排序…

HTML 常用标签总结

本篇文章总结了一些我在学习html时所记录的标签&#xff0c;虽然总结并不是非常全面&#xff0c;但都是一些比较常用的。 html元素标签 首先一个html界面是由无数个元素标签组成的&#xff0c;每个元素具有它的属性 1.input 单行文本框 标签type属性——text <input ty…

【windows】安装 Tomcat 及配置环境变量

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

视频号小店如何开店,个人可以做吗?完整版开店教程分享

大家好&#xff0c;我是电商花花。 视频号小店现在成了新的电商创业新渠道&#xff0c;这两年视频号也迎来了大爆发&#xff0c;很多朋友也都靠着视频号、视频号小店赚到了人生第一桶金&#xff0c;让很多没有接触过视频号的朋友直流口水。 那视频号小店赚钱吗&#xff1f;个人…

OpenLayers基础教程——WebGLPoints图层样式的设置方法

1、前言 前一篇博客介绍了如何在OpenLayers中使用WebGLPoints加载海量数据点的方法&#xff0c;这篇博客就来介绍一下WebGLPoints图层的样式设置问题。 2、样式运算符 在VectorLayer图层中&#xff0c;我们只需要创建一个ol.style.Style对象即可&#xff0c;WebGLPoints则不…

研华工控机610L学习笔记2:visualstudio与第一个C#程序

今日继续学习工控机 C# 编程相关知识&#xff1a; 这篇结束后我将先进行一段时间的C#的学习研究&#xff0c;并写一些C#的笔记 后续再更新工控机编程设计相关 目录 1、安装visualstudio&#xff1a; 2、创建第一个C#程序&#xff1a; 3、寻找C#解决方案源文件&#xff1a; …

《深入浅出LLM 》(二):大模型基础知识

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…