【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 {
    @Override
    protected 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);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Azure Speech

1、文字转语音(Text-To-Speech, TTS) 2、语音转文字(Speech-To-Text): Azure Speech to Text 1- 环境配置&#xff1a;Microsoft Azure 注册使用免费服务&#xff1a; 需要信用卡&#xff0c;本人没有&#xff0c;所以没有完成注册

海洋cmsv9报错注入,order by 和limit注入

海洋cmsv9 1&#xff0c;我们拿到海洋cmsv9源码分析发现注入点&#xff0c;$rlist 2&#xff0c;seacms开源&#xff0c;可以知道seacmsv9系统数据库&#xff08;mysql&#xff09;为seacms&#xff0c;存放管理员账号的表为 sea_admin&#xff0c;表中存放管理员姓名的字段为…

Linux系统下基于mplayer媒体播放器

1、项目背景 随着多媒体技术的发展&#xff0c;各种音视频格式的流行&#xff0c;用户对媒体播放器的功能和性能要求 日益增加。MPlayer是一个强大的开源媒体播放器&#xff0c;支持多种音视频格式。本项目旨在 基于MPlayer构建一个轻量级的Linux媒体播放器&#xff0c;提供简洁…

牛客NC288803 和+和

​import java.util.Comparator;import java.util.PriorityQueue;import java.util.Scanner;​public class Main {public static void main(String[] args) {// 创建Scanner对象用于读取输入Scanner sc new Scanner(System.in);// 读取两个整数n和m&#xff0c;分别表示数组的…

2025 软件供应链安全情报预警平台建设与实践

何为数字安全供应链情报&#xff1f; 所谓的数字供应链开源安全情报主要针对目标是开源数字应用资产。包括开源组件&#xff0c;中间件和操作系统。开源安全情报类型可以分为三大类&#xff1a; 1 第一类是传统的安全漏洞风险情报&#xff0c;开源漏洞情报数据获取主要有2种渠…

红蓝对抗之常见网络安全事件研判、了解网络安全设备、Webshell入侵检测

文章目录 ​​研判&#xff08;入侵检测&#xff09;​​ ​​设备​​ ​​经典网络​​​​云网络​​ ​​异常HTTP请求​​​​Webshell分析​​ ​​Webshell 的分类​​​​Webshell 的检测​​ ​​主机层面​​​​流量层面​​ ​​附录​​ ​​常见端口漏洞…

【Python系列】Python 连接 PostgreSQL 数据库并查询数据

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…

DeepSeek赋能智慧社区:提升社区治理,优化资源配置,带来全新变革

在数字化浪潮的推动下&#xff0c;智慧社区正逐渐成为城市发展的重要方向。作为一款先进的人工智能大模型&#xff0c;DeepSeek凭借其强大的多模态数据分析和智能决策能力&#xff0c;正在为智慧社区的建设注入新的活力。 标准规范及顶层设计指南、供应商整体解决方案合集、供应…

代理服务器与内网穿透/打洞

内网穿透 简单来说内网穿透就是让一个在私人IP的设备&#xff0c;能在公网上被别的主机访问到资源。 中间经过服务器将获取的数据转发给主机。 内网打洞 内网打洞&#xff0c;也叫 P2P 穿透或 NAT 穿越&#xff0c;是一种用于实现位于不同内网中的设备之间直接建立连接的技…

本地大模型编程实战(26)用langgraph实现基于SQL数据构建的问答系统(5)

本文将将扩展上一篇文章完成的 langgraph 链&#xff0c;继续使用基于 langgraph 链 &#xff0c;对结构化数据库 SQlite 进行查询的方法。该系统建立以后&#xff0c;我们不需要掌握专业的 SQL 技能&#xff0c;可以用自然语言询问有关数据库中数据的问题并返回答案。主要完善…

Geek卸载软件安装使用教程

文章目录 一、Geek下载二、使用步骤 一、Geek下载 Geek Uninstallers最新版是一款高效、快速、小巧、免费的软件卸载与清理工具&#xff0c;旨在帮助用户删除系统上安装的程序。不同于其他的卸载程序&#xff0c;Geek Uninstaller执行深入扫描进程&#xff0c;并清除软件卸载后…

BIO、NIO、AIO解析

一、基础概念 1、IO的含义 IO&#xff0c;Input/Output&#xff0c;即输入/输出。从计算机结构来看&#xff0c;IO描述了计算机系统和外部设备之间通讯的过程。从应用程序角度来看&#xff0c;一个进程的地址空间划分为 用户空间&#xff08;User space&#xff09; 和 内核空…

抖音生活服务加强探店内容治理,2024年达人违规率下降30%

发布 | 大力财经 2月27日&#xff0c;抖音生活服务发布《2024抖音生活服务消费者权益保护年度报告》&#xff08;以下简称“报告”&#xff09;。报告显示&#xff0c;过去一年&#xff0c;抖音生活服务针对消费者反感的虚假、夸张探店内容&#xff0c;开展了专项治理。通过一…

Apollo Cyber 学习笔记

目录 0 Introduction What Why Advantage 1 Example 2 Concept 3 Flow Chart 4 Module 4.1 Transport 4.1.1 Share Memory 4.1.1.1 Segment 4.1.1.1.1 State 4.1.1.1.2 Block 4.1.1.1.3 Common 4.1.1.2 Notifier 4.1.1.2.1 ConditionNotifier 4.1.1.2.2 Multi…

企业如何挖掘数据资产价值?

本期推荐&#xff1a;挖掘数据资产价值&#xff0c;赋能企业发展&#xff0c;共28页ppt。 关注WeChat Subscription Account【智慧城市指北】&#xff0c;回复关键字“20250228数据资产”&#xff0c;获取获得本文电子版材料的方式(非无偿&#xff09;~ 篇幅限制&#xff0c;…

FastExcel vs EasyExcel vs Apache POI:三者的全面对比分析

一、核心定位与历史沿革 Apache POI&#xff08;1990s-&#xff09; 作为Java生态中最古老的Excel处理库&#xff0c;提供对.xls/.xlsx文件的全功能支持。其核心价值在于对Excel规范的完整实现&#xff0c;包括单元格样式、公式计算、图表操作等深度功能。但存在内存消耗大&…

千峰React:Hooks(下)

useLayoutEffect useLayoutEffect在useEffect之前触发 这样会闪屏&#xff0c;因为是异步的&#xff0c;两次都渲染了 import {useEffect,useState } from react;function App() {const [msg,setMsg] useState(hello App)useEffect(() > {setMsg(hello useEffect)});retu…

盛京开源社区加入 GitCode,书写东北开源生态新篇章

在数字化转型与开源技术蓬勃发展的浪潮下&#xff0c;开源社区已成为推动技术创新的核心力量。盛京开源社区&#xff08;SJOSC&#xff09;作为沈阳地区的开源交流平台&#xff0c;始终致力于连接开发者、企业及高校&#xff0c;构建区域技术生态圈。 现在&#xff0c;盛京开源…

Unity:实时查看和调试日志信息(In-game Debug Console插件)

在Unity中使用In-game Debug Console插件可以方便地在应用内实时查看和调试日志信息。 1、导入插件 从Packages:My Assets导入In-game Debug Console插件&#xff0c;导入后&#xff0c;插件会自动添加到项目的Packages文件夹中。&#xff08;需要先下载该插件&#xff09; 2、…

SQL Server的安装和简单使用

目录 一、SQL Server 1.1、简介 1.2、安装包 二、安装SQL Server 2.1、双击安装包 2.2、选择自己想要安装的位置 2.3、点击安装 2.4、安装完成之后会出现以下页面&#xff0c;按照序号依次点击 2.5、不用管密钥&#xff0c;点击下一步 2.6、选择【我接受】 2.7、是否…