【Java】System 类

server/2025/3/1 11:31:42/

目录

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

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

静态字段

标准输入输出流相关

  1. System.in
    类型:InputStream
    作用:代表标准输入流,默认情况下与键盘输入关联。在控制台程序中,可用于接收用户输入的数据。
    示例:
java">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
    作用:代表标准输出流,默认情况下与控制台输出关联。用于向控制台打印各种信息。
    示例:
java">public class SystemOutExample {public static void main(String[] args) {System.out.println("这是使用 System.out 输出的信息。");}
}
  1. System.err
    类型:PrintStream
    作用:代表标准错误输出流,同样默认关联到控制台,但主要用于输出错误信息。与 System.out 不同,它通常会以不同的颜色或格式显示,方便用户区分正常输出和错误信息。
    示例:
java">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:要复制的元素数量。

示例:

java">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 之间的毫秒数,也称为时间戳。常用于性能测试、计时等场景。
    • 示例:
java">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() 更高。
    • 示例:
java">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 表示正常终止,非零值表示异常终止。
    • 示例:
java">public class SystemExitExample {public static void main(String[] args) {System.out.println("程序开始执行");if (true) {System.exit(0);}System.out.println("这行代码不会被执行");}
}
  1. gc()
    • 作用:请求 Java 虚拟机运行垃圾回收器,尝试回收未使用的对象以释放内存。但这只是一个请求,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() 方法进行一些资源清理操作。
    • 示例:
java">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 版本、操作系统名称等。
    • 示例:
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。
    • 示例:
java">public class SystemGetPropertyWithDefaultExample {public static void main(String[] args) {String nonExistentProperty = System.getProperty("non.existent.property", "默认值");System.out.println("属性值: " + nonExistentProperty);}
}
  1. getProperties()
    • 作用:返回一个 Properties 对象,包含了所有的系统属性。可以通过遍历该对象来查看所有系统属性。
    • 示例:
java">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)
    • 作用:设置指定键的系统属性值。
    • 示例:
java">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 程序对系统资源的访问权限。
    • 示例:
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,则移除当前的安全管理器。
    • 示例:
java">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() 仍然返回基于内存地址的哈希码。

示例:

java">public class SystemIdentityHashCodeExample {public static void main(String[] args) {Object obj = new Object();int identityHashCode = System.identityHashCode(obj);System.out.println("对象的基于内存地址的哈希码: " + identityHashCode);}
}

http://www.ppmy.cn/server/171534.html

相关文章

CST的UAV无人机RCS --- 双站, I求解器,CAD切割,PEC吸波材料涂层

之前几期无人机案例都是用的PEC&#xff0c;这期我们看看添加雷达吸波材料图层的PEC对RCS的影响。使用RCS模板&#xff0c;0.4GHz添加一些场监视器&#xff1a; 导入CAD模型&#xff0c;这个尺寸是11.6米长。调制参数栏&#xff0c;使入射波从飞机下面向上入射&#xff0c;极化…

云原生周刊:云原生和 AI

开源项目推荐 FlashMLA DeepSeek 于北京时间 2025 年 2 月 24 日上午 9 点正式开源了 FlashMLA 项目。FlashMLA 是专为 NVIDIA Hopper 架构 GPU&#xff08;如 H100、H800&#xff09;优化的高效多头潜在注意力&#xff08;MLA&#xff09;解码内核&#xff0c;旨在提升大模型…

JVM内存模型详解:各个区域的作用与原理

引言 Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的核心环境&#xff0c;它负责管理程序的内存、执行字节码以及提供跨平台的支持。理解JVM的内存模型对于编写高效、稳定的Java程序至关重要。本文将详细介绍JVM的内存模型&#xff0c;并深入探讨各个内存区域的作用和…

大模型赋能心脏骤停预测:精准医疗新曙光

目录 一、研究背景与意义 二、研究方法与数据来源 2.1 大模型选择与原理 2.2 数据收集 2.3 数据预处理 三、大模型预测心脏骤停的应用 3.1 术前风险预测 3.2 术中风险监测与应对 3.3 术后恢复评估 3.4 并发症风险预测 四、基于预测结果的医疗方案制定 4.1 手术方案…

DeepSeek 15天指导手册——从入门到精通 PDF(附下载)

DeepSeek使用教程系列--DeepSeek 15天指导手册——从入门到精通pdf下载&#xff1a; https://pan.baidu.com/s/1PrIo0Xo0h5s6Plcc_smS8w?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/2e8de75027d3 《DeepSeek 15天指导手册——从入门到精通》以系统化学习路径为核心&…

ChatGPT Deep Research:重塑智能研究的未来边界

目录 **ChatGPT Deep Research:重塑智能研究的未来边界****核心功能与技术突破****技术架构与性能优势****部署计划与用户价值****未来展望与挑战****结语**ChatGPT Deep Research:重塑智能研究的未来边界 引言 在人工智能技术飞速迭代的今天,OpenAI推出的Deep Research功能…

思维训练(算法+技巧)

1.深度优先搜索&#xff1a;暴力求解&#xff0c;适合判断能不能走出迷宫 利用递归&#xff0c;有一个check【】数组来检查该节点是否经过 for循环该节点的邻接节点&#xff08;存在且没被访问&#xff09;&#xff0c;递归DFS&#xff08;该节点的某个邻接节点&#xff09; D…

MySQL--DCL全解全知

MySQL 权限管理详解&#xff08;面试重点&#xff09; 一、权限管理核心语法 1. GRANT​ 授予权限 GRANT 权限1, 权限2, ... ON 权限级别 TO 用户名主机 [IDENTIFIED BY 密码] [WITH GRANT OPTION | 其他资源限制];权限列表&#xff1a; SELECT, INSERT, UPDATE, DELETE, C…