中小网站建设,相亲网站做期货现货贵金属的人,wordpress插件漏洞扫描,西部数码网站助手4.0Java 中的 System 类#xff0c;它是 java.lang 包下的核心系统类#xff0c;提供了大量与系统交互的静态方法和静态属性#xff0c;用于访问系统环境、执行系统级操作#xff08;如输入输出、垃圾回收、系统退出等#xff09;#xff0c;下面从核心特性、静态属性、常用…Java 中的System类它是java.lang包下的核心系统类提供了大量与系统交互的静态方法和静态属性用于访问系统环境、执行系统级操作如输入输出、垃圾回收、系统退出等下面从核心特性、静态属性、常用方法等方面全面讲解一、核心特性System类是最终类final不能被继承构造方法被private修饰无法通过new关键字创建实例所有属性和方法均为静态直接通过System.属性/方法名()调用功能覆盖系统输入输出、环境变量获取、数组复制、垃圾回收、系统时间获取等核心场景。二、核心静态属性System类提供了 3 个标准的输入 / 输出 / 错误输出流是 Java 基础 IO 操作的核心入口静态属性类型说明System.inInputStream标准输入流默认对应键盘输入用于读取外部输入数据System.outPrintStream标准输出流默认对应控制台输出用于打印正常信息System.errPrintStream标准错误输出流默认对应控制台输出专门用于打印错误信息输出内容通常为红色控制台默认样式示例使用静态属性进行输入输出import java.util.Scanner; public class SystemDemo { public static void main(String[] args) { // 1. System.out打印正常信息 System.out.println(这是标准输出流的正常信息); // 2. System.err打印错误信息 System.err.println(这是标准错误输出流的错误信息); // 3. System.in读取键盘输入结合 Scanner 使用 Scanner scanner new Scanner(System.in); System.out.print(请输入您的姓名); String name scanner.nextLine(); System.out.println(您好 name); scanner.close(); } }三、常用静态方法分类详解1. 系统退出exit(int status)用于终止当前 Java 虚拟机JVM的运行是程序主动退出的核心方法。参数status退出状态码0表示正常退出非 0 表示异常退出通常用1表示通用异常该方法执行后JVM 立即终止后续代码不再执行。public static void main(String[] args) { System.out.println(程序开始执行); // 模拟业务判断满足条件则退出 boolean needExit true; if (needExit) { System.out.println(程序准备退出); System.exit(0); // 正常退出JVM } // 以下代码不会执行 System.out.println(程序继续执行); }2. 垃圾回收gc()用于主动触发 Java 垃圾回收器GC的执行建议 JVM 回收那些不再被引用的对象所占用的内存。注意gc()是建议性方法并非强制性触发。JVM 会根据当前内存使用情况决定是否立即执行垃圾回收可能会忽略该请求垃圾回收的核心逻辑由 JVM 底层实现无需手动干预仅在特殊场景下如大量临时对象创建后可调用该方法辅助内存释放。public static void main(String[] args) { // 创建大量临时对象 for (int i 0; i 10000; i) { new Object(); } System.out.println(创建大量临时对象完成); // 建议JVM执行垃圾回收 System.gc(); // 等价于 Runtime.getRuntime().gc() System.out.println(已触发垃圾回收建议); }3. 数组复制arraycopy()用于快速复制数组的指定区间元素是 Java 中数组复制的高效底层方法Arrays.copyOf()等方法底层也是基于arraycopy()实现。方法签名public static void arraycopy( Object src, // 源数组 int srcPos, // 源数组的起始复制索引包含 Object dest, // 目标数组 int destPos, // 目标数组的起始存放索引包含 int length // 要复制的元素个数 )示例数组复制public static void main(String[] args) { int[] srcArr {1, 2, 3, 4, 5}; int[] destArr new int[10]; // 目标数组长度为10 // 复制源数组索引1~3的元素2,3,4到目标数组索引2开始的位置 System.arraycopy(srcArr, 1, destArr, 2, 3); System.out.println(目标数组内容); for (int num : destArr) { System.out.print(num ); // 输出0 0 2 3 4 0 0 0 0 0 } }注意事项若源数组或目标数组为null会抛出NullPointerException若索引越界如srcPos length超过源数组长度会抛出ArrayIndexOutOfBoundsException支持基本类型数组和引用类型数组的复制。4. 系统时间获取1currentTimeMillis()获取当前时间戳毫秒级返回从1970 年 1 月 1 日 00:00:00 GMT格林威治标准时间到当前时刻的毫秒数类型为long。常用于计算程序执行耗时、生成唯一标识简单场景、时间戳记录等。public static void main(String[] args) { // 记录程序开始时间 long startTime System.currentTimeMillis(); // 模拟耗时操作循环计算 long sum 0; for (long i 0; i 1000000000L; i) { sum i; } // 记录程序结束时间 long endTime System.currentTimeMillis(); // 计算耗时毫秒 System.out.println(计算结果 sum); System.out.println(程序耗时 (endTime - startTime) 毫秒); }2nanoTime()获取高精度时间戳纳秒级返回 JVM 启动以来的纳秒数相对时间非绝对时间精度远高于currentTimeMillis()1 纳秒 10^-9 秒。适用于高精度时间间隔测量如微秒级 / 纳秒级耗时统计不适合用于记录绝对时间。public static void main(String[] args) { long startNano System.nanoTime(); // 模拟短时间操作 String str ; for (int i 0; i 1000; i) { str i; } long endNano System.nanoTime(); // 转换为微秒1微秒 1000纳秒 long costMicro (endNano - startNano) / 1000; System.out.println(操作耗时 costMicro 微秒); }5. 环境变量与系统属性1getenv()获取系统环境变量System.getenv()返回所有系统环境变量的MapString, String集合System.getenv(String name)根据环境变量名获取对应值如PATH、JAVA_HOME。public static void main(String[] args) { // 1. 获取指定环境变量JAVA_HOME String javaHome System.getenv(JAVA_HOME); System.out.println(JAVA_HOME 路径 javaHome); // 2. 获取所有环境变量并遍历 System.out.println(\n所有系统环境变量); System.getenv().forEach((key, value) - { System.out.println(key value); }); }2getProperty()获取 Java 系统属性System.getProperty(String key)根据属性名获取对应值System.getProperties()返回所有 Java 系统属性的Properties对象常用系统属性user.name当前用户名、user.dir当前工作目录、java.versionJava 版本、os.name操作系统名称。public static void main(String[] args) { // 获取常用系统属性 String userName System.getProperty(user.name); String userDir System.getProperty(user.dir); String javaVersion System.getProperty(java.version); String osName System.getProperty(os.name); System.out.println(当前用户名 userName); System.out.println(当前工作目录 userDir); System.out.println(Java 版本 javaVersion); System.out.println(操作系统 osName); // 输出所有系统属性 System.out.println(\n所有Java系统属性); System.getProperties().list(System.out); }3setProperty(String key, String value)设置 Java 系统属性用于手动设置自定义 Java 系统属性仅在当前 JVM 进程中有效进程结束后失效。public static void main(String[] args) { // 设置自定义系统属性 System.setProperty(app.name, JavaSystemDemo); System.setProperty(app.version, 1.0.0); // 获取自定义属性 String appName System.getProperty(app.name); String appVersion System.getProperty(app.version); System.out.println(应用名称 appName); System.out.println(应用版本 appVersion); }四、完整使用示例import java.util.Scanner; public class SystemCompleteDemo { public static void main(String[] args) { // 1. 标准输入输出 System.out.println( 标准输入输出演示 ); Scanner scanner new Scanner(System.in); System.out.print(请输入一个整数); int num scanner.nextInt(); System.out.println(你输入的整数是 num); if (num 0) { System.err.println(错误你输入的是负数); } // 2. 数组复制 System.out.println(\n 数组复制演示 ); int[] src {10, 20, 30, 40, 50}; int[] dest new int[8]; System.arraycopy(src, 1, dest, 2, 3); System.out.println(目标数组内容); for (int i : dest) { System.out.print(i ); } System.out.println(); // 3. 时间戳与耗时统计 System.out.println(\n 耗时统计演示 ); long startMs System.currentTimeMillis(); long sum 0; for (long i 0; i 500000000L; i) { sum i; } long endMs System.currentTimeMillis(); System.out.println(求和结果 sum); System.out.println(耗时毫秒 (endMs - startMs)); // 4. 系统属性与环境变量 System.out.println(\n 系统信息演示 ); System.out.println(Java 版本 System.getProperty(java.version)); System.out.println(当前工作目录 System.getProperty(user.dir)); System.out.println(PATH 环境变量 System.getenv(PATH).substring(0, 50) ...); // 5. 垃圾回收与系统退出 System.out.println(\n 垃圾回收与程序退出演示 ); System.gc(); System.out.println(已触发垃圾回收建议); scanner.close(); // 正常退出程序 System.exit(0); // 后续代码不会执行 System.out.println(这段代码不会被输出); } }五、核心总结System是java.lang包下的final 静态类无法实例化所有功能通过静态属性 / 方法调用核心静态属性in标准输入、out标准输出、err标准错误输出核心方法分类系统控制exit()退出 JVM、gc()建议垃圾回收数组操作arraycopy()高效数组复制时间获取currentTimeMillis()毫秒时间戳、nanoTime()纳秒高精度时间环境信息getenv()系统环境变量、getProperty()/setProperty()Java 系统属性注意事项gc()是建议性方法不保证 JVM 立即执行垃圾回收arraycopy()需避免索引越界和空指针异常nanoTime()是相对时间适合耗时统计不适合记录绝对时间。