【Java】System 类

目录

  • 静态字段
    • 标准输入输出流相关
  • 常用静态方法
    • 数组操作
    • 时间操作
    • 系统操作
    • 属性操作
    • 安全管理
  • 其他方法

System 类位于 java.lang 包下,是一个 final 类,意味着它不能被继承。并且其所有构造方法都是私有的,这使得我们无法创建 System 类的实例,只能通过类名来调用其静态方法和访问静态字段。以下是关于 System 类的全面知识点介绍:

静态字段

标准输入输出流相关

  1. 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();}}
}
  1. System.out
    类型:PrintStream
    作用:代表标准输出流,默认情况下与控制台输出关联。用于向控制台打印各种信息。
    示例:
public class SystemOutExample {public static void main(String[] args) {System.out.println("这是使用 System.out 输出的信息。");}
}
  1. 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 + " ");}}
}

时间操作

  1. 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) + " 毫秒");}
}
  1. 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) + " 纳秒");}
}

系统操作

  1. 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("这行代码不会被执行");}
}
  1. gc()
    • 作用:请求 Java 虚拟机运行垃圾回收器,尝试回收未使用的对象以释放内存。但这只是一个请求,Java 虚拟机不一定会立即执行垃圾回收操作。
    • 示例:
public class SystemGCExample {public static void main(String[] args) {for (int i = 0; i < 10000; i++) {new Object();}System.gc();}
}
  1. 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();}
}

属性操作

  1. 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);}
}
  1. 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);}
}
  1. 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));}
}
  1. 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);}
}

安全管理

  1. 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("当前未安装安全管理器");}}
}
  1. 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);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android实现漂亮的波纹动画

Android实现漂亮的波纹动画 本文章讲述如何使用二维画布canvas和camera、矩阵实现二、三维波纹动画效果&#xff08;波纹大小变化、画笔透明度变化、画笔粗细变化&#xff09; 一、UI界面 界面主要分为三部分 第一部分&#xff1a;输入框&#xff0c;根据输入x轴、Y轴、Z轴倾…

基于 Buck-Boost 变换器的磷酸铁锂电池串联电压均衡模糊控制优化策略

针对磷酸铁锂电池串联应用中&#xff0c;由于单体电池之间存在不一致&#xff0c;从而导致蓄电池组利 用率和使用寿命降低的问题&#xff0c;本文提出一种基于非能耗型电压均衡方式的复合式电路拓扑。该均 衡电路在传统单体电池均衡电路的基础上&#xff0c;加入电池组间均衡电…

Spring报错解决一览

Spring错误持续更新贴… 问题一 springcloud-OAuth2.0配置的时候报错 Method springSecurityFilterChain in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type ‘org.springframework.boot.autoconfigu…

免费使用 DeepSeek API 教程及资源汇总

免费使用 DeepSeek API 教程及资源汇总 一、DeepSeek API 资源汇总1.1 火山引擎1.2 百度千帆1.3 阿里百炼1.4 腾讯云 二、其他平台2.1 华为云2.2 硅基流动 三、总结 DeepSeek-R1 作为 2025 年初发布的推理大模型&#xff0c;凭借其卓越的逻辑推理能力和成本优势&#xff0c;迅速…

蓝桥杯备考:DFS剪枝之数的划分

这道题和组合型枚举差不多&#xff0c;比如我们从第一个数开始填&#xff0c;到第二个数的时候&#xff0c;21明显是重复了&#xff0c;我们就没必要继续往下递归了&#xff0c;这个叫剪掉等效冗余分支&#xff0c;然后还有就是&#xff0c;比如我们2开始的枝头&#xff0c;222…

蓝桥杯 路径之谜

路径之谜 题目描述 小明冒充 XX 星球的骑士&#xff0c;进入了一个奇怪的城堡。 城堡里边什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡地面是 nnnn 个方格。如下图所示。 按习俗&#xff0c;骑士要从西北角走到东南角。可以横向或纵向移动&#xff0c;但不能斜着走…

Blender调整最佳渲染清晰度

1.渲染采样调高 512 2.根据需要 开启AO ,开启辉光 , 开启 屏幕空间反射 3.调高分辨率 4096x4096 100% 分辨率是清晰度的关键 , 分辨率不高 , 你其他参数调再高都没用 4.世界环境开启体积散射 , 可以增强氛围感 5.三点打光法 放在模型和相机45夹角上 白模 白模带线条 成品

Django基础环境准备

Django基础环境准备 文章目录 Django基础环境准备1.准备的环境 win11系统&#xff08;运用虚拟环境搭建&#xff09;1.1详见我的资源win11环境搭建 2.准备python环境2.1 winr 打开命令提示符 输入cmd 进入控制台2.2 输入python --version 查看是否有python环境2.3在pyhton官网下…

介绍一款飞算JavaAI编程工具,集成到idea,图文并茂

飞算的插件下载地址&#xff0c;里边也有安装步骤&#xff1a; JavaAI 下载 从file-》setting-》plugin&#xff0c;然后走图中所示 选择从磁盘安装插件&#xff1a;找到下载好的压缩包然后进行idea重启 根据提示模块可以生成代码&#xff0c;就是需要等待&#xff0c;后期不…

python-leetcode-斐波那契数

509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; class Solution:def fib(self, n: int) -> int:if n 0:return 0dp [0] * (n 1)dp[1] 1for i in range(2, n 1):dp[i] dp[i - 1] dp[i - 2]return dp[n]

类和对象——const修饰的类的对象和函数

const修饰的类的对象和函数 const成员函数和const对象1 const成员函数2 调用关系3 const在成员函数中的位置4 取地址&及const取地址操作符重载 const成员函数和const对象 1 const成员函数 将const修饰的“成员函数”称之为const成员函数&#xff0c;const修饰类成员函数&…

unity学习61:UI布局layout

目录 1 布局 layout 1.1 先准备测试UI,新增这样一组 panel 和 image 1.2 新增 vertical layout 1.3 现在移动任意一个image 都会影响其他 1.3.1 对比 如果没有这个&#xff0c;就会是覆盖效果了 1.3.2 对比 如果没有这个&#xff0c;就会是覆盖效果了 1.4 总结&#xf…

第48天:Web开发-JavaEE应用依赖项Log4j日志Shiro验证FastJson数据XStream格式

#知识点 1、安全开发-JavaEE-第三方依赖开发安全 2、安全开发-JavaEE-数据转换&FastJson&XStream 3、安全开发-JavaEE-Shiro身份验证&Log4j日志处理 一、Log4j 一个基于Java的日志记录工具&#xff0c;当前被广泛应用于业务系统开发&#xff0c;开发者可以利用该工…

使用tkinter有UI方式来拷贝Excel文件

有需求使用tkinter 有用户交互界面来拷贝Excel文件&#xff0c;最后进行打包完成 代码如下&#xff0c;实现思路是先使用tkinter库选择Excel路径&#xff0c;然后保存到txt文档&#xff0c; import time import tkinter from pathlib import Path from typing import Optiona…

【六祎 - Note】Redis缓存设计模型,备忘录;

Redis缓存备忘录 from to : 点击访问源地址

天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库

天佐.乾坤袋 天佐.乾坤袋 简介 天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库&#xff0c;可用于文件打包&#xff0c;数据整合&#xff0c;加密存放等多种用途。可以方便快捷的搭建和部署存储应用的系统。 传说: 弥勒所有&#xff0c;专做储物之用。拥有不可思议之力&#x…

【前端基础】Day 5 CSS浮动

目录 1. 浮动 1.1 标准流&#xff08;普通流/文档流&#xff09; 1.2 浮动 1.2.1 浮动的特性 1.2.2 浮动元素常和标准流父级搭配使用 1.2.3 案例 2. 常见网页布局 2.1 常见网页布局 2.2 浮动布局注意点 3. 清除浮动 3.1 原因 3.2 清除浮动的本质 3.3 清除浮动的方…

硬编码(三)经典变长指令一

我们在前两节的硬编码中学习了定长指令&#xff0c;接下来学习变长指令 对于定长指令&#xff0c;我们通过opcode便可知该指令的长度&#xff0c;但是对于变长指令却是不可知的。变长指令长度由opcode&#xff0c;ModR/M&#xff0c;SIB共同决定。变长指令通常在需要操作内存的…

【免费】YOLO[笑容]目标检测全过程(yolo环境配置+labelimg数据集标注+目标检测训练测试)

一、yolo环境配置 这篇帖子是我试过的&#xff0c;非常全&#xff0c;很详细【cudaanacondapytorchyolo(ultralytics)】 yolo环境配置 二、labelimg数据集标注 可以参考下面的帖子&#xff0c;不过可能会出现闪退的问题&#xff0c;安装我的流程来吧 2.1 labelimg安装 label…

Cursor配置MCP Server

一、什么是MCP MCP&#xff08;Model Context Protocol&#xff09;是由 Anthropic&#xff08; Claude 的那个公司&#xff09; 推出的开放标准协议&#xff0c;它为开发者提供了一个强大的工具&#xff0c;能够在数据源和 AI 驱动工具之间建立安全的双向连接。 举个好理解…