Java Math类、System类、Runtime类

Math类

Java中的Math类是一个包含各种数学方法的内置类,它提供了一系列静态方法,用于执行各种数学计算。具体来说,Math类中的方法可以分为以下几类:

  1. 基本数学运算:包括加法、减法、乘法和除法等。
  2. 三角函数:如正弦(sin)、余弦(cos)和正切(tan)等。
  3. 指数和对数函数:包括指数(exp)和自然对数(log)等。
  4. 取整运算:如向上取整(ceil)、向下取整(floor)和四舍五入(round)等。
  5. 最大值和最小值:用于比较两个数值的大小,返回较大或较小的一个。
  6. 常量:如π(PI)和自然对数的底数(E)等。

此外,由于Math类中的方法都是静态的,因此无需创建对象就可以直接使用这些方法。例如,要计算一个数的平方根,可以直接调用Math.sqrt(number)方法。

以下是一些常见的Math类方法及其代码详解:

abs(x):返回参数x的绝对值。

int result = Math.abs(-5); // 结果为5

sqrt(x):返回参数x的平方根。

double result = Math.sqrt(9); // 结果为3.0

cbrt(x):返回参数x的立方根。

double result = Math.cbrt(8); // 结果为2.0

pow(a, b):返回a的b次幂。

double result = Math.pow(2, 3); // 结果为8.0

exp(x):返回e的x次幂,其中e是自然对数的底数。

double result = Math.exp(1); // 结果为2.718281828459045

log(x):返回参数x的自然对数。

double result = Math.log(2.718281828459045); // 结果为1.0

sin(x):返回参数x的正弦值。

double result = Math.sin(Math.PI / 2); // 结果为1.0

cos(x):返回参数x的余弦值。

double result = Math.cos(Math.PI); // 结果为-1.0

tan(x):返回参数x的正切值。

double result = Math.tan(Math.PI / 4); // 结果为1.0

ceil(x):返回大于或等于参数x的最小整数。

double result = Math.ceil(3.14); // 结果为4.0

floor(x):返回小于或等于参数x的最大整数。

double result = Math.floor(3.14); // 结果为3.0

round(x):返回最接近参数x的整数。

double result = Math.floor(3.14); // 结果为3.0

max(a, b):返回两个参数中的最大值。

int result = Math.max(5, 3); // 结果为5

min(a, b):返回两个参数中的最小值。

int result = Math.min(5, 3); // 结果为3

random():返回一个介于0(包含)和1(不包含)之间的随机浮点数。

double result = Math.random(); // 结果为一个随机数,例如0.123456789

System类

Java的System类是java.lang包中的一个非常核心且广泛使用的类。它主要提供以下几方面的功能:

  1. 系统属性访问:System类允许开发者访问和操作各种系统属性,如操作系统的名称、版本、文件分隔符等。
  2. 输入输出操作:通过System类可以执行标准输入(System.in)、标准输出(System.out)和错误输出(System.err)的相关操作。
  3. 外部命令执行:使用System类可以在Java程序中执行外部命令和程序。
  4. 时间获取:System类提供了获取系统当前时间的方法,比如System.currentTimeMillis()用于获取当前时间以毫秒为单位的时间戳。
  5. 环境变量访问:允许读取和设置系统的环境变量。
  6. 安全相关方法:System类还提供了一些与安全相关的方法,如System.getSecurityManager()。
  7. 数组复制:System类中的arraycopy方法是用于快速复制数组的一部分的实用工具方法。
  8. 动态加载:System类还提供了动态加载文件和库的方法。
  9. 退出程序:System.exit方法可以用来终止当前运行的Java虚拟机。
  10. 内存信息:可以通过System类获取JVM的内存信息,如总内存、可用内存等。

此外,由于System类的构造函数是private的,因此我们不能创建System类的实例,也就是说,我们不能实例化这个类。System类的所有方法都是静态的,这意味着我们不需要创建对象就可以直接调用这些方法。例如,打印输出通常是用System.out.println()来直接调用的。

Java的System类提供了许多常用的方法,下面介绍一些常用的方法及其代码示例:

获取系统属性:可以使用System.getProperty()方法来获取系统的各种属性。例如,要获取操作系统的名称,可以使用以下代码:

String osName = System.getProperty("os.name");
System.out.println("Operating System: " + osName);

执行外部命令:可以使用System.exec()方法来执行外部命令。例如,要执行一个ping命令,可以使用以下代码:

try {Process process = Runtime.getRuntime().exec("ping www.google.com");BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}process.waitFor();
} catch (IOException | InterruptedException e) {e.printStackTrace();
}

这将执行ping命令并输出结果。

获取当前时间戳:可以使用System.currentTimeMillis()方法来获取当前时间的时间戳。例如,要获取当前时间戳,可以使用以下代码:

long currentTimeMillis = System.currentTimeMillis();
System.out.println("Current Time in Milliseconds: " + currentTimeMillis);

这将输出当前时间的时间戳。

读取输入流:可以使用System.in来读取标准输入流。例如,要读取用户输入的一行文本,可以使用以下代码:

Scanner scanner = new Scanner(System.in);
System.out.print("Enter a line of text: ");
String input = scanner.nextLine();
System.out.println("You entered: " + input);

这将提示用户输入一行文本,并将其打印出来。

设置环境变量:可以使用System.setProperty()方法来设置环境变量。例如,要设置一个名为"myVar"的环境变量,可以使用以下代码:

System.setProperty("myVar", "Hello, World!");
String myVar = System.getProperty("myVar");
System.out.println("myVar: " + myVar);

这将设置一个名为"myVar"的环境变量,并将其值设置为"Hello, World!"。然后,使用System.getProperty()方法获取该环境变量的值,并将其打印出来。

复制数组:arraycopy方法用于高效地复制数组的一部分到另一个数组。

public class ArrayCopyExample {public static void main(String[] args) {// 创建源数组int[] sourceArray = {1, 2, 3, 4, 5};// 创建目标数组,长度与源数组相同int[] targetArray = new int[sourceArray.length];// 使用System.arraycopy方法复制数组System.arraycopy(sourceArray, 0, targetArray, 0, sourceArray.length);// 打印目标数组for (int i = 0; i < targetArray.length; i++) {System.out.print(targetArray[i] + " ");}//结果1 2 3 4 5}
}

在上述代码中,我们首先创建了一个名为sourceArray的源数组,然后创建了一个与源数组长度相同的目标数组targetArray。接下来,我们使用System.arraycopy方法将源数组的内容复制到目标数组中。

System.arraycopy方法的参数如下:

  • sourceArray:源数组,即要复制的数组。
  • 0:源数组中的起始位置,表示从哪个索引开始复制。
  • targetArray:目标数组,即要将数据复制到的数组。
  • 0:目标数组中的起始位置,表示从哪个索引开始粘贴数据。
  • sourceArray.length:要复制的元素数量。

最后,我们通过遍历目标数组并打印每个元素来验证复制是否成功。

 终止Java虚拟机:exit方法用于终止当前运行的Java虚拟机。该方法接受一个整数参数,表示退出状态码。

以下是使用System.exit方法的代码示例:

public class ExitExample {public static void main(String[] args) {System.out.println("程序开始执行");// 调用System.exit方法终止程序System.exit(0);System.out.println("程序结束执行"); // 这行代码不会被执行}
}

在上述示例中,当调用System.exit(0)后,程序立即终止,后续的输出语句不会被执行。

 Runtime类

Java Runtime类是一个关键的系统类,它提供了对当前Java虚拟机实例的访问和控制能力。以下是一些Runtime类的详细介绍:

  1. 执行外部命令:通过Runtime类可以执行系统命令或外部程序,这通常通过exec方法实现。
  2. 内存管理:该类提供了总内存、空闲内存以及垃圾回收器的各种信息和方法,使得程序能够更好地管理系统资源。
  3. 动态加载类:可以使用Runtime来动态加载类文件到Java虚拟机中,从而在运行时扩展程序的功能。
  4. 获取Runtime实例:通常情况下,我们无法直接实例化Runtime对象,但可以通过其静态方法getRuntime()获取当前的Runtime实例。
  5. 系统属性访问:Runtime类还允许你访问和操作各种系统属性,例如内存设置、系统时间等。
  6. 版本信息访问:可以通过这个类获取Java运行时环境的版本信息。

以下是一些常用的Runtime类方法及其代码示例:

获取运行时环境:可以使用getRuntime()方法获取当前的Runtime实例。

Runtime runtime = Runtime.getRuntime();

执行外部命令:可以使用exec()方法执行系统命令或外部程序。

try {Process process = runtime.exec("notepad.exe"); // 打开记事本
} catch (IOException e) {e.printStackTrace();
}

获取内存信息:可以使用maxMemory()、totalMemory()和freeMemory()方法获取内存信息。

long maxMemory = runtime.maxMemory(); // 最大可用内存
long totalMemory = runtime.totalMemory(); // 已分配内存
long freeMemory = runtime.freeMemory(); // 空闲内存

垃圾回收:可以使用gc()方法强制进行垃圾回收。

runtime.gc(); // 强制进行垃圾回收

获取系统属性:可以使用getProperty()方法获取系统属性。

String osName = System.getProperty("os.name"); // 操作系统名称
String javaVersion = System.getProperty("java.version"); // Java版本号

获取运行时环境版本信息:可以使用version()方法获取Java运行时环境的版本信息。

String version = System.getProperty("java.version"); // Java版本号

需要注意的是,虽然Runtime类提供了许多强大的功能,但使用这些功能时应当小心谨慎,因为它们可能会对系统稳定性和安全性造成影响。

 

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

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

相关文章

JavaScript条件判断

JavaScript使用if () { … } else { … }来进行条件判断。 例如&#xff0c;根据年龄显示不同内容&#xff0c;可以用if语句实现如下&#xff1a; var age 20; if (age > 18) { // 如果age > 18为true&#xff0c;则执行if语句块 alert(‘adult’); } else { // 否则执行…

CSS之第一个CSS样式和CSS选择符

前端这些博客&#xff0c;我觉得都是固定的语法&#xff0c;故而不会以过多的文字进行描述&#xff0c;本系列博文均以实例和代码介绍的方式进行&#xff0c;主要按照代码进行。不会以过多的文字描述。 第一个CSS样式 <!DOCTYPE html> <html lang"en">…

【JavaEE初阶系列】——文件操作 IO 之 文件系统操作

目录 &#x1f4dd;认识文件 &#x1f6a9;树型结构组织 和 目录 &#x1f388;绝对路径和相对路径 &#x1f6a9;文件类型 &#x1f4dd;文件系统操作 &#x1f388;File 概述 &#x1f388;File类的使用 1. 绝对路径 vs 相对路径 2. 路径分隔符 3. 静态成员变量 4…

Arraylist,TreeSet,TreeMap的增删改查及遍历

ArrayList &#xff1a; 是 Java 中一个动态数组&#xff0c;它基于可变长度数组实现&#xff0c;能够以恒定时间复杂度进行增删改操作&#xff0c;但遍历操作的时间复杂度为 O(n)。 有序&#xff0c;可重复&#xff0c;有索引 增删改查排序&#xff1a; **add(E e)&#x…

【C语言】翻译环境与运行环境

一、前言 在我们学习C语言的时候&#xff0c;第一个接触的程序就是&#xff1a;在屏幕上打印” hello word! “&#xff0c;可当时的我们却未去深入的理解与感悟&#xff0c;一个程序代码是如何运行的&#xff1b;而这一期的博客&#xff0c;则是带着我们&#xff0c;通过C代码…

mac电脑安装redis教程

1、下载地址 Download | RedisRedisYou can download the last Redis source files here. For additional options, see the Redis downloads section below.Stable (7.2)Redis 7.2 …https://redis.io/download/#redis-downloads 2、安装 2.1 解压下载后的压缩文件 2.2 进入…

Vulnhub:WESTWILD: 1.1

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 dirmap enm4ulinux sumbclient get flag1 ssh登录 提权 横向移动 get root 信息收集 arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 0…

LeetCode-236. 二叉树的最近公共祖先【树 深度优先搜索 二叉树】

LeetCode-236. 二叉树的最近公共祖先【树 深度优先搜索 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;递归判断解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖…

Qt中的事件与事件处理

Qt框架中的事件处理机制是其GUI编程的核心部分&#xff0c;它确保了用户与应用程序之间的交互能够得到正确的响应。以下是对Qt事件处理机制的详细讲解以及提供一些基本示例。 1. 事件与事件处理简介 事件&#xff1a;在Qt中&#xff0c;所有的事件都是从QEvent基类派生出来的&…

linux操作系统的进程状态

这个博客只是为了自己复习用的&#xff01;&#xff01;&#xff01; 冯诺依曼体系结构 计算机是由一个一个硬件组成的 输入设备&#xff1a;键盘&#xff0c;鼠标&#xff0c;扫描仪&#xff0c;写板等等 中央处理器&#xff08;CPU&#xff09;:含有运算器和控制器等 输出单…

【算法练习】27:冒泡排序学习笔记

一、冒泡排序的算法思想 原理&#xff1a;以升序为例&#xff0c;冒泡排序通过从左往右连续比较相邻元素&#xff0c;当发现左边比右边大就交换元素。从左往右依次比较完称为“一轮”&#xff0c;每轮结束之后就会固定一个元素。 时间复杂度&#xff1a;2层循环&#xff0c;所以…

不讲概念,讲实操,mysql 分表模糊查询、分页查询 及 merge 表的使用

1.Mysql merge合并表的要求 1.合并的分表必须是 MyISAM 引擎&#xff0c;MyISAN引擎是不支持事务的。2.Merge表只保证合表后数据唯一性&#xff0c;合表前的数据可能会存在重复。3.表的结构必须一致&#xff0c;包括索引、字段类型、引擎和字符集。4.删除 tb_member1 分表正确…

Python实现BOA蝴蝶优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算…

【蓝桥杯每日一题】4.4 扫雷

题目来源&#xff1a; 687. 扫雷 - AcWing题库 参考&#xff1a;y总视频讲解 问题描述&#xff1a; 找到解决扫雷游戏中的最小点击次数 思考&#xff1a; 为了保证胜利且每个格子只能走一次&#xff0c;所以当遇到地雷或检测到该格子周围存在地雷的时候就需要停止搜索&…

前端同学必备:教你如何安装、使用Chrome的vue-devtools插件

I. 介绍vue-devtools插件 Vue-devtools是一个Chrome浏览器插件&#xff0c;它是一个浏览器调试工具&#xff0c;用于开发Vue.js应用程序。它可以用于Vue.js应用程序的调试&#xff0c;可以更好地了解应用程序的结构和状态&#xff0c;以及帮助快速修复代码错误。 Vue-devtool…

[技术闲聊]我对电路设计的理解(三)

终于可以独立做项目了&#xff0c;是不是很激动&#xff0c;是不是为自己骄傲和自豪&#xff0c;应该的&#xff0c;奋斗那么久不就是为了站在山巅看看四周的风景嘛&#xff01; 虽说山外还有山&#xff0c;但是此刻就在脚下的山巅上&#xff0c;怡然自得都是不过分的&#xff…

LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?实战演示(下篇)

引言 简介 编译Android可用的模型 转换权重 生成配置文件 模型编译 编译apk 修改配置文件 绑定android library 配置gradle 编译apk 手机上运行 安装 APK 植入模型 效果实测 0. 引言 清明时节雨纷纷&#xff0c;路上行人欲断魂。 小伙伴们好&#xff0c;我是《小…

9.动态规划——4.最长公共子序列(动态规划类的算法题该如何解决?)

例题——最长公共子序列(一) 分析 设最长公共子序列 d p [ i ] [ j ] dp[i][j] dp[i][j]是 S 1 S_1 S1​的前 i i i个元素&#xff0c;是 S 2 S_2 S2​的前 j j j个元素&#xff0c;那么有&#xff1a; 若 S 1 [ i − 1 ] S 2 [ i − 1 ] S_1[i-1]S_2[i-1] S1​[i−1]S2​[…

MFC 获取程序版本信息

在 MFC 应用程序中&#xff0c;可以使用 GetFileVersionInfo 函数来获取程序版本信息。这个函数能够获取一个指定文件的版本信息&#xff0c;并将其存储在一个缓冲区中。然后&#xff0c;可以使用 VerQueryValue 函数来解析版本信息并提取所需的信息。 #include <afxver_.h&…

leetcode刷题-代码训练营-第7章-回溯算法1

回溯法模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的大小&#xff09;) {处理节点;backtracking(路径&#xff0c;选择列表); // 递归回溯&#xff0c;撤销处理结果} }理解 从…