Java中System类和RunTime类的Api

目录

System 类

1)out

2)err

3)in

4)currentTimeMillis()

5)nanoTime()

6)arraycopy(Object 要从里面复制东西的数组, int 要从里面复制东西数组的索引起始位置, Object 获得复制元素的数组, int 获得复制元素数组的起始索引, int 要复制东西的个数)

7)gc()

8)exit(int status)

9)getProperties()

10.案例:统计程序运行时间

1.代码

2.效果

11.案例:获得系统属性信息

1.代码

2.效果

​编辑

Runtime 类

1)getRuntime()

2)exec(String command)

3)exec(String[] cmdarray)

4)exec(String command, String[] envp)

5)exec(String command, String[] envp, File dir)

6)availableProcessors()

7)freeMemory()

8)totalMemory()

9)maxMemory()

10)addShutdownHook(Thread hook)

11)removeShutdownHook(Thread hook)

12.案例:获取JVM信息

1.代码

2.效果 

13.案例:打开记事本

1.代码

2.效果


System 类

System 类主要用于获取系统属性、标准输入输出流以及执行垃圾回收等操作。它包含了许多静态方法和字段。

  1. 1)out

    • 标准输出流,通常连接到控制台。
    System.out.println("Hello, World!");
  2. 2)err

    • 标准错误流,通常用于打印错误信息。
    System.err.println("This is an error message.");
  3. 3)in

    • 标准输入流,通常从控制台读取数据。
    Scanner scanner = new Scanner(System.in);
    String input = scanner.nextLine();
  4. 4)currentTimeMillis()

    • 返回当前时间的毫秒表示形式。
    long currentTime = System.currentTimeMillis();
  5. 5)nanoTime()

    • 返回最精确的可用系统计时器的当前值,以纳秒为单位。
    long nanoTime = System.nanoTime();
  6. 6)arraycopy(Object 要从里面复制东西的数组, int 要从里面复制东西数组的索引起始位置, Object 获得复制元素的数组, int 获得复制元素数组的起始索引, int 要复制东西的个数)

    • 从一个数组复制指定范围的元素到另一个数组。
    int[] srcArray = {1, 2, 3, 4, 5};
    int[] destArray = new int[5];
    System.arraycopy(srcArray, 0, destArray, 0, 5);
  7. 7)gc()

    • 建议 JVM 进行垃圾回收。
    System.gc();
  8. 8)exit(int status)

    • 终止当前正在运行的 Java 虚拟机。
    System.exit(0); // 正常退出
  9. 9)getProperties()

    • 获取当前系统的所有属性。
    Properties properties = System.getProperties();
    for (String key : properties.stringPropertyNames()) {
        System.out.println(key + ": " + properties.getProperty(key));
    }

10.案例:统计程序运行时间

1.代码

package org.xiji.system;


public class SystemS {
    public static void main(String[] args)
    {

        //起始时间
        long startTime = System.currentTimeMillis();
        System.out.println("开始时间:"+startTime);
        int sum = 0 ;

        for (int i = 0; i < 1000000000; i++) {
            sum += i;
        }

        //结束时间
        long endTime = System.currentTimeMillis();
        System.out.println("结束时间:"+endTime);
        System.out.println("运行时间:"+(endTime-startTime)+"ms");
    }
}

2.效果

11.案例:获得系统属性信息

1.代码

package org.xiji.system;

import java.util.Enumeration;
import java.util.Properties;

public class MyProperties {
    public static void main(String[] args)
    {

        Properties properties = System.getProperties();
        System.out.println("获得key集合");
        Enumeration<Object> keys = properties.keys();
        System.out.println("系统属性Key:");
        while (keys.hasMoreElements())
        {
            String key = (String) keys.nextElement();
            String value = properties.getProperty(key);
            System.out.println(key+" = "+value);
        }

    }
}

2.效果

可以看到获取了很多系统的信息

Runtime 类

Runtime允许应用程序与其运行环境进行交互。每个 Java 应用程序都有一个 Runtime 实例,可以通过 Runtime.getRuntime() 方法获取。

  1. 1)getRuntime()

    • 返回与当前 Java 应用程序相关的 Runtime 对象。
    Runtime runtime = Runtime.getRuntime();
  2. 2)exec(String command)

    • 执行指定的字符串命令。
    try {
        Process process = runtime.exec("notepad.exe");
    } catch (IOException e) {
        e.printStackTrace();
    }
  3. 3)exec(String[] cmdarray)

    • 使用给定的参数数组执行命令。
    try {
        Process process = runtime.exec(new String[]{"cmd", "/c", "dir"});
    } catch (IOException e) {
        e.printStackTrace();
    }
  4. 4)exec(String command, String[] envp)

    • 在指定的环境变量下执行命令。
    try {
        Process process = runtime.exec("notepad.exe", new String[]{"PATH=C:\\Windows\\System32"});
    } catch (IOException e) {
        e.printStackTrace();
    }
  5. 5)exec(String command, String[] envp, File dir)

    • 在指定的工作目录和环境变量下执行命令。
    try {
        Process process = runtime.exec("notepad.exe", null, new File("C:\\"));
    } catch (IOException e) {
        e.printStackTrace();
    }
  6. 6)availableProcessors()

    • 返回可用处理器的数量。
    int processors = runtime.availableProcessors();
    System.out.println("Number of available processors: " + processors);
  7. 7)freeMemory()

    • 返回 JVM 当前可用的内存数量。
    long freeMemory = runtime.freeMemory();
    System.out.println("Free Memory: " + freeMemory);
  8. 8)totalMemory()

    • 返回 JVM 总共可以使用的内存数量。
    long totalMemory = runtime.totalMemory();
    System.out.println("Total Memory: " + totalMemory);
  9. 9)maxMemory()

    • 返回 JVM 可以使用的最大内存量。
    long maxMemory = runtime.maxMemory();
    System.out.println("Max Memory: " + maxMemory);
  10. 10)addShutdownHook(Thread hook)

    • 注册一个新的虚拟机关闭钩子。
    runtime.addShutdownHook(new Thread(() -> {
        System.out.println("Shutting down...");
    }));
  11. 11)removeShutdownHook(Thread hook)

    • 移除之前注册的虚拟机关闭钩子。
    Thread shutdownHook = new Thread(() -> {
        System.out.println("Shutting down...");
    });
    runtime.addShutdownHook(shutdownHook);
    runtime.removeShutdownHook(shutdownHook);

12.案例:获取JVM信息

1.代码

package org.xiji.system;

public class GetJVMInfo {
    public static void main(String[] args)
    {
        Runtime runtime = Runtime.getRuntime();

        //处理器个数
        System.out.println("处理器个数:"+runtime.availableProcessors());

        //JVM总内存
        System.out.println("JVM总内存:"+runtime.totalMemory()/1024/1024+"MB");

        //JVM空闲内存
        System.out.println("JVM空闲内存:"+runtime.freeMemory()/1024/1024+"MB");
        //JVM最大内存
        System.out.println("JVM最大内存:"+runtime.maxMemory()/1024/1024+"MB");



    }
}

2.效果 

13.案例:打开记事本

1.代码

package org.xiji.system;

public class OpenNotePad {
    public static void main(String[] args)
    {
        Runtime r = Runtime.getRuntime();
        try
        {
            r.exec("notepad");
            System.out.println("记事本已经打开");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

2.效果

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

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

相关文章

51单片机的无线通信智能车库门【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块红外传感器光照传感器时钟模块步进电机蓝牙按键、LED、蜂鸣器等模块构成。适用于智能车库自动门、无线控制车库门等相似项目。 可实现功能: 1、LCD1602实时显示北京时间和自动/手动模式&#xff0c;以及验证是否成…

【Arduino IDE安装】Arduino IDE的简介和安装详情

目录 &#x1f31e;1. Arduino IDE概述 &#x1f31e;2. Arduino IDE安装详情 &#x1f30d;2.1 获取安装包 &#x1f30d;2.2 安装详情 &#x1f30d;2.3 配置中文 &#x1f30d;2.4 其他配置 &#x1f31e;1. Arduino IDE概述 Arduino IDE&#xff08;Integrated Deve…

使用 Go 和 Gin 框架构建简单的用户和物品管理 Web 服务

使用 Go 和 Gin 框架构建简单的用户和物品管理 Web 服务 在本项目中&#xff0c;我们使用 Go 语言和 Gin 框架构建了一个简单的 Web 服务&#xff0c;能够管理用户和物品的信息。该服务实现了两个主要接口&#xff1a;根据用户 ID 获取用户名称&#xff0c;以及根据物品 ID 获…

模拟实现消息队列(基于SpringBoot实现)

项目代码 提要&#xff1a;此处的消息队列是仿照RabbitMQ实现&#xff08;参数之类的&#xff09;&#xff0c;实现一些基本的操作&#xff1a;创建/销毁交互机&#xff08;exchangeDeclare&#xff0c;exchangeDelete&#xff09;&#xff0c;队列&#xff08;queueDeclare&a…

【电路笔记】-求和运算放大器

求和运算放大器 文章目录 求和运算放大器1、概述2、反相求和放大器3、同相求和放大器4、减法放大器5、应用5.1 音频混合器5.2 数模转换器 (DAC)6、总结1、概述 在我们之前有关运算放大器的大部分文章中,仅将一个输入应用于反相或非反相运算放大器的输入。在本文中,将讨论一种…

Python:条件分支 if 语句全讲解

Python&#xff1a;条件分支 if 语句全讲解 如果我拿出下面的代码&#xff0c;阁下该做何应对&#xff1f; if not reset_excuted and (terminated or truncated):... else:...---- 前言&#xff1a; 消化论文代码的时候看到这个东西直接大脑冻结&#xff0c;没想过会在这么…

5个免费ppt模板网站推荐!轻松搞定职场ppt制作!

每次过完小长假&#xff0c;可以明显地感觉到&#xff0c;2024这一年很快又要结束了&#xff0c;不知此刻的你有何感想呢&#xff1f;是满载而归&#xff0c;还是准备着手制作年终总结ppt或年度汇报ppt呢&#xff1f; 每当说到制作ppt&#xff0c;很多人的第一反应&#xff0c…

ElasticSearch备考 -- Multi match

一、题目 索引task有3个字段a、b、c&#xff0c;写一个查询去匹配这三个字段为mom&#xff0c;其中b的字段评分比a、c字段大一倍&#xff0c;将他们的分数相加作为最后的总分数 二、思考 通过题目要求对多个字段进行匹配查询&#xff0c;可以考虑multi match、bool query操作。…

vivo全新AI战略“蓝心智能”发布 原系统5亮相开发者大会

​10月10日&#xff0c;2024 vivo开发者大会在深圳国际会展中心举办&#xff0c;大会主题为“同心同行”。会上&#xff0c;vivo正式发布全新AI战略——“蓝心智能”&#xff0c;同时带来全面升级的自研蓝心大模型矩阵、原系统5&#xff08;OriginOS 5&#xff09;、蓝河操作系…

PHP中的HTTP请求:简化你的网络通信

在当今的网络应用开发中&#xff0c;PHP作为一种流行的服务器端脚本语言&#xff0c;经常需要与外部服务进行通信。这通常涉及到发送HTTP请求来获取或提交数据。幸运的是&#xff0c;PHP提供了多种方式来简化HTTP请求的过程&#xff0c;使得网络通信变得轻而易举。 PHP中的HTTP…

网络编程(17)——asio多线程模型IOThreadPool

十七、day17 之前我们介绍了IOServicePool的方式&#xff0c;一个IOServicePool开启n个线程和n个iocontext&#xff0c;每个线程内独立运行iocontext, 各个iocontext监听各自绑定的socket是否就绪&#xff0c;如果就绪就在各自线程里触发回调函数。为避免线程安全问题&#xf…

AVL树如何维持平衡

1.AVL树的特性 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种…

音频文件重采样 - python 实现

在处理音频文件的时候&#xff0c;经常会将原音频进行统一的重采样处理&#xff0c;设置为相同的采样率&#xff0c;本示例&#xff0c;就是将44100采样率的音频&#xff0c;重采样为16000. 安装对应的python 库&#xff1a;librosa 和 soundfile. pip install soundfile pip i…

详细解读“霸王面”战术

“霸王面”战术是指在没有得到雇主面试通知的情况下&#xff0c;强行加入面试&#xff0c;以此争取工作机会的求职策略。以下将以3000字左右的篇幅&#xff0c;通过生动形象的例子详细解释这一战术。 一、背景介绍 在当今竞争激烈的就业市场中&#xff0c;求职者需要经历网申…

国外火出圈儿的PM御用AI编程工具Bolt.new效果干不过国产的CodeFlying?号称全新定义全栈开发流程?

不知道大家最近有没有发现国外的很多AI都在挤破脑袋想去提升大模型的编程能力&#xff0c; 离我们最近的是上周Openai 发布的全新模型GPT-4o-Canvas&#xff0c; 拥有超强的代码编写能力。 另外还有LlamaCoder、Cursor、Claude artifacts、Replit... 光是今年一年就推出了好…

【笔记学习篇】一篇文章搞定Mybatis-快速回顾

概述 5.1.1 Mybatis简介 Mybatis是一款优秀的持久层框架&#xff0c;它以sql为中心&#xff0c;支持定制化sql、存储过程以及高级映射。 使用Mybatis框架&#xff0c;可以无需手动编写基础的JDBC代码、无需手动设置参数和转换结果集到对象。 Mybatis可以使用简单的xml或注解来…

2024.10月7~10日 进一步完善《电信资费管理系统》

一、新增的模块&#xff1a; 在原项目基础上&#xff0c;新增加了以下功能&#xff1a; 1、增加AspectJ 框架的AOP 异常记录和事务管理模块。 2、增加SpringMVC的拦截器&#xff0c;实现登录 控制页面访问权限。 3、增加 Logback日志框架&#xff0c;记录日志。 4、增加动态验…

ssm基于Javaee的影视创作论坛的设计与实现

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 第1章 绪论 1 1.1选题动因 1 1.2目的和意义 1 1.3论文结构安排 2 第2章 开发环境与技术 …

Auto-Animate:是一款零配置、即插即用的动画工具,可以为您的 Web 应用添加流畅的过渡效果

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 用户体验成为了检验产品成功与否的关键因素。而动画效果&#xff0c;作为提升用户体验的重要手段&#xff0c;在网页和应用开发中扮演着举足轻重的角色…

机器学习、深度学习评价指标汇总:TP、TN、FP、FN、AP、mAP、IoU、mAP@3、Prec@10、 Acc@10

系列文章目录 文章目录 系列文章目录一、真正例&#xff08;True Positive&#xff09;、假正例&#xff08;False Positive&#xff09;、真负例&#xff08;True Negative&#xff09;和假负例&#xff08;False Negative&#xff09;是评估分类模型性能的重要概念。1. 定义2…