【Java】System 类
目录
- 静态字段
- 标准输入输出流相关
- 常用静态方法
- 数组操作
- 时间操作
- 系统操作
- 属性操作
- 安全管理
- 其他方法
System 类位于 java.lang 包下,是一个 final 类,意味着它不能被继承。并且其所有构造方法都是私有的,这使得我们无法创建 System 类的实例,只能通过类名来调用其静态方法和访问静态字段。以下是关于 System 类的全面知识点介绍:
静态字段
标准输入输出流相关
System.in
类型:InputStream
作用:代表标准输入流,默认情况下与键盘输入关联。在控制台程序中,可用于接收用户输入的数据。
示例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class SystemInExample {public static void main(String[] args) {try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {System.out.print("请输入你的姓名: ");String name = reader.readLine();System.out.println("你输入的姓名是: " + name);} catch (IOException e) {e.printStackTrace();}}
}
System.out
类型:PrintStream
作用:代表标准输出流,默认情况下与控制台输出关联。用于向控制台打印各种信息。
示例:
public class SystemOutExample {public static void main(String[] args) {System.out.println("这是使用 System.out 输出的信息。");}
}
System.err
类型:PrintStream
作用:代表标准错误输出流,同样默认关联到控制台,但主要用于输出错误信息。与 System.out 不同,它通常会以不同的颜色或格式显示,方便用户区分正常输出和错误信息。
示例:
public class SystemErrExample {public static void main(String[] args) {try {int result = 1 / 0;} catch (ArithmeticException e) {System.err.println("发生错误: " + e.getMessage());}}
}
常用静态方法
数组操作
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
作用:将源数组中从指定位置开始的一定数量的元素复制到目标数组的指定位置。这是一个本地方法,底层使用高效的内存复制操作,性能较高。
参数说明:
- src:源数组。
- srcPos:源数组中开始复制的起始位置。
- dest:目标数组。
- destPos:目标数组中开始粘贴的起始位置。
- length:要复制的元素数量。
示例:
public class SystemArraycopyExample {public static void main(String[] args) {int[] source = {1, 2, 3, 4, 5};int[] destination = new int[5];System.arraycopy(source, 1, destination, 2, 3);for (int num : destination) {System.out.print(num + " ");}}
}
时间操作
currentTimeMillis()- 作用:返回当前系统时间与 1970 年 1 月 1 日 00:00:00 UTC 之间的毫秒数,也称为时间戳。常用于性能测试、计时等场景。
- 示例:
public class SystemCurrentTimeMillisExample {public static void main(String[] args) {long startTime = System.currentTimeMillis();for (int i = 0; i < 1000000; i++) {// 模拟耗时操作}long endTime = System.currentTimeMillis();System.out.println("操作耗时: " + (endTime - startTime) + " 毫秒");}
}
nanoTime()- 作用:返回当前系统的高精度时间,单位为纳秒。该方法返回的时间值是相对于某个固定但未指定的起点的,主要用于测量短时间间隔,精度比 currentTimeMillis() 更高。
- 示例:
public class SystemNanoTimeExample {public static void main(String[] args) {long startTime = System.nanoTime();for (int i = 0; i < 1000; i++) {// 模拟更短的耗时操作}long endTime = System.nanoTime();System.out.println("操作耗时: " + (endTime - startTime) + " 纳秒");}
}
系统操作
exit(int status)- 作用:终止当前正在运行的 Java 虚拟机。参数 status 为 0 表示正常终止,非零值表示异常终止。
- 示例:
public class SystemExitExample {public static void main(String[] args) {System.out.println("程序开始执行");if (true) {System.exit(0);}System.out.println("这行代码不会被执行");}
}
gc()- 作用:请求 Java 虚拟机运行垃圾回收器,尝试回收未使用的对象以释放内存。但这只是一个请求,Java 虚拟机不一定会立即执行垃圾回收操作。
- 示例:
public class SystemGCExample {public static void main(String[] args) {for (int i = 0; i < 10000; i++) {new Object();}System.gc();}
}
runFinalization()- 作用:请求 Java 虚拟机运行所有对象的 finalize() 方法。当一个对象被垃圾回收之前,Java 虚拟机会调用其 finalize() 方法进行一些资源清理操作。
- 示例:
class MyClass {@Overrideprotected void finalize() throws Throwable {System.out.println("对象被回收前执行 finalize 方法");}
}public class SystemRunFinalizationExample {public static void main(String[] args) {MyClass obj = new MyClass();obj = null;System.gc();System.runFinalization();}
}
属性操作
getProperty(String key)- 作用:获取指定键的系统属性值。系统属性包含了很多关于 Java 虚拟机和操作系统的信息,如 Java 版本、操作系统名称等。
- 示例:
public class SystemGetPropertyExample {public static void main(String[] args) {String javaVersion = System.getProperty("java.version");System.out.println("Java 版本: " + javaVersion);}
}
getProperty(String key, String def)- 作用:获取指定键的系统属性值,如果该属性不存在,则返回默认值 def。
- 示例:
public class SystemGetPropertyWithDefaultExample {public static void main(String[] args) {String nonExistentProperty = System.getProperty("non.existent.property", "默认值");System.out.println("属性值: " + nonExistentProperty);}
}
getProperties()- 作用:返回一个 Properties 对象,包含了所有的系统属性。可以通过遍历该对象来查看所有系统属性。
- 示例:
import java.util.Properties;public class SystemGetPropertiesExample {public static void main(String[] args) {Properties properties = System.getProperties();properties.forEach((key, value) -> System.out.println(key + " = " + value));}
}
setProperty(String key, String value)- 作用:设置指定键的系统属性值。
- 示例:
public class SystemSetPropertyExample {public static void main(String[] args) {System.setProperty("my.property", "自定义属性值");String value = System.getProperty("my.property");System.out.println("自定义属性值: " + value);}
}
安全管理
getSecurityManager()- 作用:返回当前 Java 虚拟机的安全管理器,如果没有安装安全管理器,则返回 null。安全管理器用于控制 Java 程序对系统资源的访问权限。
- 示例:
public class SystemGetSecurityManagerExample {public static void main(String[] args) {SecurityManager securityManager = System.getSecurityManager();if (securityManager != null) {System.out.println("当前安装了安全管理器");} else {System.out.println("当前未安装安全管理器");}}
}
setSecurityManager(SecurityManager s)- 作用:设置 Java 虚拟机的安全管理器。如果参数 s 为 null,则移除当前的安全管理器。
- 示例:
import java.lang.SecurityManager;public class SystemSetSecurityManagerExample {public static void main(String[] args) {SecurityManager securityManager = new SecurityManager();System.setSecurityManager(securityManager);System.out.println("已设置安全管理器");}
}
其他方法
identityHashCode(Object x)
作用:返回指定对象的哈希码,该哈希码是基于对象的内存地址计算的,与对象的 hashCode() 方法可能不同。即使对象重写了 hashCode() 方法,identityHashCode() 仍然返回基于内存地址的哈希码。
示例:
public class SystemIdentityHashCodeExample {public static void main(String[] args) {Object obj = new Object();int identityHashCode = System.identityHashCode(obj);System.out.println("对象的基于内存地址的哈希码: " + identityHashCode);}
}
相关文章:
【Java】System 类
目录 静态字段标准输入输出流相关 常用静态方法数组操作时间操作系统操作属性操作安全管理 其他方法 System 类位于 java.lang 包下,是一个 final 类,意味着它不能被继承。并且其所有构造方法都是私有的,这使得我们无法创建 System 类的实例&…...
Zookeeper(80)Zookeeper的常见问题有哪些?
Zookeeper作为分布式系统的协调服务,常见的问题主要集中在配置、性能、连接管理、数据一致性和节点故障等方面。以下是一些常见问题及其详细解决方法和代码示例。 1. 配置问题 问题描述 配置不当可能导致 Zookeeper 集群无法正常启动或运行效率低下。 解决方法 …...
docker通用技术介绍
docker通用技术介绍 1.docker介绍 1.1 基本概念 docker是一个开源的容器化平台,用于快速构建、打包、部署和运行应用程序。它通过容器化技术将应用及其依赖环境(如代码、库、系统工具等)打包成一个标准化、轻量级的独立单元,实…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_buf_t
ngx_buf_t 定义在 src/core/ngx_buf.h typedef struct ngx_buf_s ngx_buf_t;struct ngx_buf_s {u_char *pos;u_char *last;off_t file_pos;off_t file_last;u_char *start; /* start of buffer */u_char …...
Spring Data JPA 中的分页实现:从 BasePage 到 Pageable
文章目录 Spring Data JPA 中的分页实现:从 BasePage 到 Pageable背景:为什么需要分页?认识 BasePage 类深入 toPageable() 方法1. 处理页码和页面大小2. 处理排序方向3. 处理排序字段4. 生成 Pageable 对象 实战:如何使用 BasePa…...
自然语言处理NLP入门 -- 第八节OpenAI GPT 在 NLP 任务中的应用
在前面的学习中,我们已经了解了如何使用一些经典的方法和模型来处理自然语言任务,如文本分类、命名实体识别等。但当我们需要更强的语言生成能力时,往往会求助于更先进的预训练语言模型。OpenAI 旗下的 GPT 系列模型(如 GPT-3、GP…...
HTML:自闭合标签简单介绍
1. 什么是自结束标签? 定义:自结束标签(Self-closing Tag)是指 不需要单独结束标签 的 HTML 标签,它们通过自身的语法结构闭合。语法形式: 在 HTML5 中:直接写作 <tag>,例如 …...
智能家居遥控革命!昂瑞微HS6621EM:用「芯」定义AIoT时代的语音交互标杆
AIoT爆发期,遥控器为何成为智能家居的「隐形战场」? 随着Meta、苹果等巨头加速布局空间计算,智能家居生态正从「单一设备联网」向「全场景无感交互」跃迁。作为高频使用的入口设备,语音遥控器的性能直接决定用户体验天花板。昂瑞微…...
AI学习第七天
数组:基础概念、存储特性及力扣实战应用 在计算机科学与数学的广袤领域中,数组作为一种极为重要的数据结构,发挥着不可或缺的作用。它就像一个有序的 “数据仓库”,能高效地存储和管理大量数据。接下来,让我们深入了解…...
Grafana使用日志7--开启Sigv4
背景 在Grafana中,有些data source是需要开启sigv4认证的,例如OpenSearch,这个配置项默认是关闭的,这里我们介绍一下怎么开启 步骤 传统方式 如果我们想在Grafana中开启sigv4认证,我们需要在grafana.ini中修改一个…...
【Redis】Redis 入门
借鉴枫枫知道 一、连接 redis 1.1 命令行连接 // 完整的命令 redis-cli -h 127.0.0.1 -p 6379 -a password// 简写 redis-cli// 认证,进行redis之后 auth password1.2 go 代码连接 package mainimport ("fmt""github.com/go-redis/redis" …...
一文了解:部署 Deepseek 各版本的硬件要求
很多朋友在咨询关于 DeepSeek 模型部署所需硬件资源的需求,最近自己实践了一部分,部分信息是通过各渠道收集整理,so 仅供参考。 言归正转,大家都知道,DeepSeek 模型的性能在很大程度上取决于它运行的硬件。我们先看一下…...
15.14 QLoRA量化低秩适配微调:华盛顿大学的显存优化革命
QLoRA量化低秩适配微调:华盛顿大学的显存优化革命 一、技术架构解析 #mermaid-svg-Rkx3w3RQJ1e7odbb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Rkx3w3RQJ1e7odbb .error-icon{fill:#552222;}#mermaid-svg-Rk…...
软件工程复试专业课-能力成熟度模型CMM
CMM CMM概念CMM的核心CMM来由CMM的目的成熟度等级初始级可重复级已定义级已管理级优化级 CMM概念 即能力成熟度模型,是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。 CMM是改进软件过程的有效策略。它的基本思想是࿰…...
Dify使用和入门
第一步:了解 Dify 在开始之前,先简单了解一下 Dify 是什么: Dify 是一个开源的 LLM 应用开发平台,专注于帮助开发者快速构建生产级的生成式 AI 应用。它支持知识库集成、RAG(检索增强生成)技术、复杂工作…...
Mercury、LLaDA 扩散大语言模型
LLaDA 参考: https://github.com/ML-GSAI/LLaDA https://ml-gsai.github.io/LLaDA-demo/ 在线demo: https://huggingface.co/spaces/multimodalart/LLaDA Mercury 在线demo: https://chat.inceptionlabs.ai/ 速度很快生成...
Windows 图形显示驱动开发-WDDM 3.2-自动显示切换(十二)
API 更改 ADS 功能增加了以下公共 API 功能: 枚举系统中的多路复用器设备。查询有关多路复用器的信息,例如,它连接了哪些目标,以及当前切换到哪个目标。触发多路复用器切换。如何检测多路复用器是否已切换。 枚举系统中的多路复…...
Windows环境下SuperMapGIS 11i 使用达梦数据库
1. 环境介绍: 1.1. 操作系统: windows server 2019 1.2. GIS 软件: 1.2.1. GIS 桌面 supermap-idesktopx-11.3.0-windows-x64-bin 下载链接:SuperMap技术资源中心|为您提供全面的在线技术服务 安装教程:绿色版&…...
Claude 3.7 Sonnet深度解析:混合推理模型如何重塑AI编程能力
引言 2025年2月25日,人工智能领域领先企业Anthropic正式发布了新一代大语言模型Claude 3.7 Sonnet。作为全球首个混合推理AI模型,Claude 3.7 Sonnet在编程开发、逻辑推理以及任务处理效率等方面实现了突破性进展。本文将从核心特性、性能评测、竞品对比…...
IP属地是通过卫星定位的吗?如何保护用户隐私
在数字时代,网络空间成为了人们日常生活不可或缺的一部分。随着社交媒体、在线服务等平台的兴起,用户IP属地信息的重要性日益凸显。然而,关于IP属地是如何确定的,尤其是是否通过卫星定位这一问题,却常常引发公众的疑问…...
金融赋能绍兴纺织 民生银行助力外贸中小微企业“走出去”
在浙江绍兴,纺织业作为一张熠熠生辉的产业名片,承载着深厚的历史底蕴与蓬勃的发展活力。这里依傍长三角经济圈,交通网络纵横交错,将原材料产地与广阔市场紧密相连;产业集群高度成熟,上下游产业链完备&#…...
标记符号“<”和“>”符号被称为“尖括号”或“角括号”
你提到的“<”和“>”符号被称为“尖括号”或“角括号”。它们常用于编程语言中表示类型参数(如泛型)、HTML标签(如<div>)、数学中的不等式(如< 5)等。 好的,我来用通俗的方式解…...
一键部署DeepSeek
腾讯Cloud Studio提供DeepSeek一键部署功能,0行代码,秒级部署使用! 重点是每月免费提供10000分钟! 不用等待模型下载,创建即可使用。 内置 Ollama、DeepSeek-R1 1.5B、7B、8B、14B 及 32B 模型。 热门模板 AI模板 前…...
科普:ROC AUC与PR AUC
在评价二分类模型性能时,有许多评价指标,其中,有一对是用面积AUC(Area Under the Curve)做评价的:ROC AUC与PR AUC 本文我们对ROC AUC与PR AUC进行多维度对比分析: 一、定义与核心原理 维度RO…...
自动化测试无法启动(java.net.SocketException)
在运行测试代码,对浏览器进行自动化操作时,遇到了以下问题,添加依赖,编写了测试代码,但是程序无法运行 这个有两种原因(我使用的是谷歌浏览器): 网络问题: 因为需要从GitHub上下载对应包,所以有时候可能会出现网络问题,这个时候可以打开VPN之后,重新对程序进行启动 浏览器版本…...
大白话解释xxl-job是什么 有什么用 怎么用
XXL-JOB是什么? XXL-JOB就像快递公司的“总调度中心”,专门帮你的程序在不同服务器之间协调和执行定时任务。比如你有个电商系统,每天凌晨要统计订单数据、每小时要发促销短信,这些定时任务交给XXL-JOB来统一管理,它能…...
STM32G473VET6 在 Keil MDK 下手动移植 FreeRTOS 指南
下面将详细介绍如何在 Keil MDK 环境下将 FreeRTOS 手动移植到 STM32G473VET6 微控制器上。内容涵盖工程创建、获取源码、文件组织、移植层适配、测试任务编写以及编译调试等步骤。 1. 工程搭建(Keil 项目创建) 创建基础工程:首先准备一个基…...
WPF中对滚动条进行平滑滚动
有时候我们在动态添加内容时,需要将滚动条滚动到指定内容处。 一般我们会调用ScrollViewer的ScrollToVerticalOffset(垂直方向)函数和ScrollToHorizontalOffset(水平方向)函数来控制滚动条滚动到指定位置。 正常滚动效…...
API,URL,Token,XML,JSON是干嘛的
API,URL,Token,XML,JSON是干嘛的 API的作用 API(Application Programming Interface,应用程序编程接口)是一组定义和协议,用于构建和交互软件应用程序。API允许不同的软件系统之间…...
Threejs 解析几何体提取顶点数据流程
目录 前言 原生WebGL 整体解析过程简介 顶点颜色属性Geometry.colors Geometry转化为BufferGeometry 相关函数 WebGLAttributes.js WebGLGeometries.js WebGLObjects.js WebGLRenderer.js WebGLRenderer.js 前言 解析几何体对象,提取顶点数据…...
