Java中System类和RunTime类的Api

news2024/11/19 10:26:39

目录

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.效果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Miniconda 入门级使用教程

前言 Miniconda是一个更小的Anaconda发行版&#xff08;Anaconda是一个包含大量预装数据科学和机器学习库的Python发行版&#xff09;&#xff0c;它只包含conda包管理器和Python以及其必要的库。Miniconda的目的是提供一个更轻量级的选项来安装和运行conda环境&#xff0c;同…

动态轻量级线程池项目

动态线程池&#xff1a; 使用线程池ThreadPoolExecutor过程中你是否有以下痛点呢&#xff1f; ① 代码中创建了一个ThreadPoolExecutor&#xff0c;但是不知道参数设置多少比较合适。 ② 凭经验设置参数值&#xff0c;上线后发现需要调整&#xff0c;改代码重新发布服务&…

电脑缺失msvcr120.dll怎样修复,马上教你6种修复方法

在用电脑的时候&#xff0c;经常会碰到各种错误提示&#xff0c;比如“msvcr120.dll丢失”&#xff0c;导致的结果就是某些程序无法正常启动。那么&#xff0c;这个dll文件到底是啥&#xff0c;为什么会丢失&#xff0c;怎么解决呢&#xff1f;将通过这篇文章详细解释一下&…

Agent心理诊所上线!基于1.3K抑郁症问诊对话,上海交大团队搭建大模型对话Agent,可初诊抑郁症

心理健康问题是当今社会最大的挑战之一&#xff0c;根据 WHO 的世界心理健康报告&#xff0c;约有 2 亿 4,600 万人患有抑郁障碍&#xff0c;平均每 10 万人中就有 3,153 个案例&#xff0c;可以说&#xff0c;这是最常见的精神障碍之一。 然而&#xff0c;如今在心理健康方面…

终于有人把思科认证全部说清楚了

思科作为全球领先的网络设备供应商&#xff0c;其认证体系在全球范围内被广泛认可&#xff1b; 但是大部分了解的朋友都只知道CCNA、CCNP和CCIE&#xff0c;但对思科的整个系统不是很清楚。 随着Cisco产品线的扩大和市场份额的不断提升&#xff0c;Cisco认证产品从当初仅有的路…

Kubernetes的Pod调度:让你的应用像乘坐头等舱!

一、Kubernetes 中 Pod 调度的重要性 在 Kubernetes 的世界里&#xff0c;Pod 调度就像是一个繁忙的交通指挥官&#xff0c;负责把小车&#xff08;也就是我们的 Pod&#xff09;送到最合适的停车位&#xff08;节点&#xff09;。调度不仅关乎资源的合理利用&#xff0c;还关乎…

【投稿优惠|稳定检索】2024 年信息学、网络与电子工程国际会议(INEE 2024)

2024 年信息学、网络与电子工程国际会议 2024 International Conference on Informatics, Networks, and Electronic Engineering 【1】大会信息 会议名称&#xff1a;2024 年信息学、网络与电子工程国际会议 会议简称&#xff1a;INEE 2024 大会时间&#xff1a;请查看官网 …

P-Tuning v2:一种普遍有效的提示调整方法

人工智能咨询培训老师叶梓 转载标明出处 预训练语言模型通过微调&#xff08;fine-tuning&#xff09;来适应特定任务虽然效果显著&#xff0c;但存在训练成本高、参数存储量大等问题。为了解决这些问题&#xff0c;清华大学的研究者们提出了一种名为P-Tuning v2的提示调整&am…

whistle配合app抓包

whistle配合app抓包 1.前置准备2.手机配置3.手机安装证书1.前置准备 下载启动whistle,本例使用默认的127.0.0.1:8899 需要保证Capture TUNNEL CONNECTS处在开启状态: 输入命令:w2 start,获取当前局域网的ip地址,并记录: 2.手机配置 打开无线局域网连接dxm_phone,配置…

Codeforces Round 833 (Div. 2)

比赛链接&#xff1a;Dashboard - Codeforces Round 833 (Div. 2) - Codeforces B. Diverse Substrings 题意&#xff1a; 思路&#xff1a; 当字符串长度 > 10 时&#xff0c;每个字符出现的次数至少是 2 次 ( 0 ~ 9 个出现一次&#xff0c;剩余字符出现 ) 当字符串长度…

Kali Linux 下载与安装手册

目录 Kali 是什么&#xff1f; 通过Kali官方网站下载 Kali 是什么&#xff1f; Kali Linux&#xff0c;前称BackTrack&#xff0c;是一个基于Debian的Linux发行版&#xff0c;专为数字取证和渗透测试而设计。它由Offensive Security Ltd.开发和维护&#xff0c;旨在为安全专…

10.10 题目总结(累计)

1.完成所有任务需要的最少轮数(思路) 思路:将数组的数依次放到map里面,如果有相同则在原有的基础上加一,然后全部放完之后,就遍历map,然后计算总次数,然后有一次的的则直接返回. AC: class Solution {public int minimumRounds(int[] tasks) {HashMap<Integer, Integer>…

【C++】--类和对象(3)

&#x1f911;个人主页: 起名字真南 &#x1f911;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 深入构造函数2 类型转换3 static成员4 友元函数5 内部类6 匿名对象 1 深入构造函数 之前我们实现构造函数的时候&#xff0c;初始化成员变量都是在函数体内赋值&#xff0c…

linux-冯诺伊曼体系结构以及操作系统

冯诺依曼体系结构 我们不畅见到计算机&#xff0c;如笔记本&#xff0c;不常见的如服务器&#xff0c;大部分都遵循着冯诺伊曼体系结构 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由一个个硬件组件组成。 输入单元&#xff1a;包括键盘 , 鼠标&#xff0c;扫描…

鸿蒙开发之ArkUI 界面篇 二十四 计数器案例

计数器案例&#xff0c;点击’-‘按钮&#xff0c;数字减少1&#xff0c;点击啊‘’按钮&#xff0c;数字加一 分析&#xff1a;这里需要三个组件&#xff0c;外层容器是Row&#xff0c;从左往右的组件分别是ButtonTextButton&#xff0c;涉及到修改更新界面&#xff0c;变量需…

Java语言教程:打造你的第一款五子棋游戏 JAVA学习攻略心得总结

目录 Java语言教程&#xff1a;打造你的第一款五子棋游戏 游戏简介 游戏代码 自学Java攻略及功能 1. Java基础知识 2. 面向对象编程&#xff08;OOP&#xff09; Java简介 游戏简介 五子棋&#xff0c;又称连珠&#xff0c;是一种两人对弈的棋类游戏。五子棋的规则简单易…

红帽7—Mysql路由部署

MySQL Router 是一个对应用程序透明的InnoDB Cluster连接路由服务&#xff0c;提供负载均衡、应用连接故障转移和客户端路 由。 利用路由器的连接路由特性&#xff0c;用户可以编写应用程序来连接到路由器&#xff0c;并令路由器使用相应的路由策略 来处理连接&#xff0c;使其…

添加菜品到购物车

分析 数据库设计 代码开发 三个步骤&#xff1a; 判断当前商品是否已经在购物车中如果在购物车中&#xff0c;更新购物车中商品数量如果不在购物车中&#xff0c;添加到购物车 controller层 /*** 添加购物车** return*/PostMapping("/add")ApiOperation("添加购…

MediaTek携手“天玑芯世界探索官”辛芷蕾,开启科技新世界

2024年10月9日&#xff0c;MediaTek举办 2024天玑旗舰芯片新品发布会&#xff0c;正式发布旗舰 5G 智能体 AI 芯片天玑 9400。发布会上&#xff0c;MediaTek回顾了天玑品牌5周年的辉煌历程&#xff0c;展望了AI技术将推动人类进入一个充满人文关怀和情感交流的智慧科技新世界&a…

智能优化算法-引力搜索优化算法(GSA)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 引力搜索优化算法 (Gravitational Search Algorithm, GSA) 是一种基于牛顿万有引力定律的元启发式优化算法&#xff0c;由Rashedi等人于2009年提出。GSA通过模拟天体之间的引力作用来搜索最优解&#xff0c;适用…