公司网站管理制度,开发软件是什么专业,微信网页版本,私自建设网站在 Java 中#xff0c;System 和 Runtime 类都是 java.lang 包下非常重要的类#xff0c;它们提供了与系统交互以及管理 Java 虚拟机#xff08;JVM#xff09;运行时环境的功能。
System 类
System 类包含了一些有用的类字段和方法#xff0c;它不能被实例化#xff0… 在 Java 中System 和 Runtime 类都是 java.lang 包下非常重要的类它们提供了与系统交互以及管理 Java 虚拟机JVM运行时环境的功能。
System 类
System 类包含了一些有用的类字段和方法它不能被实例化其所有的方法都是静态的。以下是 System 类的一些常用功能和方法。
1. 标准输入输出流
System.in标准输入流通常与键盘输入相关联类型为 InputStream。System.out标准输出流通常与控制台输出相关联类型为 PrintStream。System.err标准错误输出流用于输出错误信息同样是 PrintStream 类型。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class SystemIOExample {public static void main(String[] args) {try {BufferedReader reader new BufferedReader(new InputStreamReader(System.in));System.out.println(请输入一些内容:);String input reader.readLine();System.out.println(你输入的内容是: input);} catch (IOException e) {System.err.println(读取输入时发生错误: e.getMessage());}}
}2. 系统属性
System.getProperty(String key)用于获取指定键的系统属性值。System.setProperty(String key, String value)用于设置指定键的系统属性值。
public class SystemPropertiesExample {public static void main(String[] args) {// 获取系统属性String osName System.getProperty(os.name);System.out.println(操作系统名称: osName);// 设置系统属性System.setProperty(my.property, my value);String myProperty System.getProperty(my.property);System.out.println(自定义属性值: myProperty);}
}3. 时间相关
System.currentTimeMillis()返回当前时间以毫秒为单位通常用于计算代码执行时间。System.nanoTime()返回当前时间的纳秒数提供更高精度的时间测量。
public class SystemTimeExample {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) 毫秒);}
}4. 数组复制
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int 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, 0, destination, 0, 5);for (int num : destination) {System.out.print(num );}}
}5. 退出 JVM
System.exit(int status)用于终止当前正在运行的 Java 虚拟机参数 status 为退出状态码0 表示正常退出非零值表示异常退出。
public class SystemExitExample {public static void main(String[] args) {System.out.println(程序开始执行);System.exit(0);System.out.println(这行代码不会被执行);}
}Runtime 类
Runtime 类表示 Java 应用程序的运行时环境每个 Java 应用程序都有一个单一的 Runtime 实例通过 Runtime.getRuntime() 方法可以获取该实例。
1. 执行外部命令
Runtime.getRuntime().exec(String command)用于在 Java 程序中执行外部命令。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class RuntimeExecExample {public static void main(String[] args) {try {// 在 Windows 系统上执行 dir 命令在 Linux 或 macOS 上执行 ls 命令String os System.getProperty(os.name).toLowerCase();String command;if (os.contains(win)) {command cmd /c dir;} else {command ls;}Process process Runtime.getRuntime().exec(command);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();}}
}2. 内存管理
Runtime.getRuntime().totalMemory()返回 Java 虚拟机中的内存总量。Runtime.getRuntime().freeMemory()返回 Java 虚拟机中的空闲内存量。Runtime.getRuntime().maxMemory()返回 Java 虚拟机试图使用的最大内存量。
public class RuntimeMemoryExample {public static void main(String[] args) {Runtime runtime Runtime.getRuntime();System.out.println(总内存: runtime.totalMemory() 字节);System.out.println(空闲内存: runtime.freeMemory() 字节);System.out.println(最大内存: runtime.maxMemory() 字节);}
}3. 关闭钩子
Runtime.getRuntime().addShutdownHook(Thread hook)用于注册一个关闭钩子当 JVM 正常关闭时会执行该钩子线程。
public class RuntimeShutdownHookExample {public static void main(String[] args) {Runtime.getRuntime().addShutdownHook(new Thread(() - {System.out.println(JVM 即将关闭执行清理操作...);}));System.out.println(程序正在运行...);System.exit(0);}
}综上所述System 类主要提供了与系统相关的一些静态方法和属性而 Runtime 类则提供了与 Java 虚拟机运行时环境交互的功能。
BigDecimal
在 Java 中BigDecimal 类位于 java.math 包下用于进行高精度的十进制数运算。基本数据类型如 float 和 double在进行小数运算时会存在精度丢失的问题而 BigDecimal 可以避免这种情况适合用于需要精确计算的场景如金融领域。
构造方法
BigDecimal 提供了多种构造方法常用的有
BigDecimal(String val)通过字符串来创建 BigDecimal 对象这是推荐的方式因为它能精确表示传入的数值。BigDecimal(double val)通过 double 类型的值来创建对象但可能会出现精度问题因为 double 本身就存在精度误差。BigDecimal(int val)通过 int 类型的值来创建对象。BigDecimal(long val)通过 long 类型的值来创建对象。
import java.math.BigDecimal;public class BigDecimalConstructorExample {public static void main(String[] args) {// 使用字符串创建 BigDecimal 对象BigDecimal bd1 new BigDecimal(0.1);System.out.println(通过字符串创建: bd1);// 使用 double 创建 BigDecimal 对象BigDecimal bd2 new BigDecimal(0.1);System.out.println(通过 double 创建: bd2);// 使用 int 创建 BigDecimal 对象BigDecimal bd3 new BigDecimal(10);System.out.println(通过 int 创建: bd3);}
}常用方法
1. 基本运算方法
add(BigDecimal augend)加法运算返回两个 BigDecimal 对象相加的结果。subtract(BigDecimal subtrahend)减法运算返回两个 BigDecimal 对象相减的结果。multiply(BigDecimal multiplicand)乘法运算返回两个 BigDecimal 对象相乘的结果。divide(BigDecimal divisor, int scale, RoundingMode roundingMode)除法运算scale 表示保留的小数位数roundingMode 表示舍入模式。
import java.math.BigDecimal;
import java.math.RoundingMode;public class BigDecimalArithmeticExample {public static void main(String[] args) {BigDecimal num1 new BigDecimal(10.5);BigDecimal num2 new BigDecimal(2.5);// 加法BigDecimal sum num1.add(num2);System.out.println(加法结果: sum);// 减法BigDecimal difference num1.subtract(num2);System.out.println(减法结果: difference);// 乘法BigDecimal product num1.multiply(num2);System.out.println(乘法结果: product);// 除法BigDecimal quotient num1.divide(num2, 2, RoundingMode.HALF_UP);System.out.println(除法结果: quotient);}
}2. 比较方法
compareTo(BigDecimal val)比较两个 BigDecimal 对象的大小返回值为 -1小于、0等于或 1大于。
import java.math.BigDecimal;public class BigDecimalCompareExample {public static void main(String[] args) {BigDecimal num1 new BigDecimal(10);BigDecimal num2 new BigDecimal(20);int result num1.compareTo(num2);if (result 0) {System.out.println(num1 小于 num2);} else if (result 0) {System.out.println(num1 等于 num2);} else {System.out.println(num1 大于 num2);}}
}3. 舍入模式
在进行除法运算或设置小数位数时需要指定舍入模式RoundingMode 枚举类提供了多种舍入模式常用的有
RoundingMode.HALF_UP四舍五入当舍弃部分的最高位大于等于 5 时进位。RoundingMode.DOWN直接舍弃后面的数字不进行进位。RoundingMode.UP只要舍弃部分不为 0就进位。
import java.math.BigDecimal;
import java.math.RoundingMode;public class BigDecimalRoundingExample {public static void main(String[] args) {BigDecimal num new BigDecimal(3.14159);// 四舍五入保留两位小数BigDecimal roundedHalfUp num.setScale(2, RoundingMode.HALF_UP);System.out.println(四舍五入结果: roundedHalfUp);// 直接舍弃保留两位小数BigDecimal roundedDown num.setScale(2, RoundingMode.DOWN);System.out.println(直接舍弃结果: roundedDown);// 进位保留两位小数BigDecimal roundedUp num.setScale(2, RoundingMode.UP);System.out.println(进位结果: roundedUp);}
}构造方法选择尽量使用 BigDecimal(String val) 构造方法避免使用 BigDecimal(double val) 以防止精度丢失。异常处理在进行除法运算时如果除不尽且未指定舍入模式会抛出 ArithmeticException 异常因此需要指定合适的舍入模式和小数位数。
BigDecimal 类为高精度的十进制数运算提供了强大的支持在需要精确计算的场景中发挥着重要作用。