当前位置: 首页 > news >正文

System类、BigDecimal类、Calendar类 用法详解

System类

System 类是Java中的一个核心类,提供了访问与系统相关的一些属性和方法。它包含了一些静态字段和静态方法,用于获取系统的标准输入、标准输出、标准错误流,以及加载动态链接库和系统属性等功能。

常见方法:

public static void exit(int status)

  • 作用:终止当前正在运行的 Java 虚拟机。

  • 参数:status 整数值,用来指示程序的终止状态。

  • 不同的整数值通常被约定俗成地用于表示不同的意义或状态,虽然 Java 规范并未强制规定其具体含义。一般来说:

    1. 非零状态码:通常用来表示程序非正常退出,表示可能发生了错误或异常情况。不同的非零状态码可以表示不同的错误类型或级别。

    2. 零状态码:通常用来表示程序正常退出,表示程序顺利完成了其任务且没有发生异常。

    具体使用时,状态码的具体含义可以由程序员自定义约定,也可以遵循某些标准或操作系统约定的状态码含义。在实际应用中,状态码的具体选择应该根据程序的具体需求和上下文来决定,以便于后续的程序调试、错误处理或者状态监控。

    System.exit(0); // 正常退出程序

public static long currentTimeMillis()

  • 作用:返回当前时间与1970年1月1日午夜(GMT)之间以毫秒为单位的时间差。

  • 返回值:当前时间的毫秒表示。

    long currentTime = System.currentTimeMillis(); 
    System.out.println("Current time in milliseconds: " + currentTime);

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

  • 作用:将数组中指定的数据复制到另一个数组中。

  • 参数:

    • src:源数组。

    • srcPos:源数组中的起始位置。

    • dest:目标数组。

    • destPos:目标数组中的起始位置。

    • length:要复制的元素数量。

    int[] srcArray = {1, 2, 3, 4, 5};
    int[] destArray = new int[5];
    System.arraycopy(srcArray, 0, destArray, 0, 5);

public static String getProperty(String key)

  • 作用:获取系统属性。

  • 参数:key 属性名。

  • 返回值:属性值,以字符串形式返回。

    String javaVersion = System.getProperty("java.version");
    System.out.println("Java version: " + javaVersion);

public static void gc() 

  • 作用:请求 Java 虚拟机进行垃圾回收。

    System.gc();

示例

import java.util.Arrays;
import java.util.Scanner;
​
public class SystemDemo {public static void main(String[] args) {//Scanner 是 Java 中的一个类,用于获取用户输入。System.in 标准输入流Scanner scanner = new Scanner(System.in);//调用垃圾回收的方法,但不知道什么时候回收
//        System.gc();//终止虚拟机  一般不会用
//        System.exit(1);//从1970.1.1 00:00:00 到目前时间的毫秒数用于测量时间间隔或者为时间戳生成唯一标识for (int i = 0; i < 15; i++) {long l = System.currentTimeMillis();System.out.println(l);}
​int ints[] = {1,2,3,4,5};int ints1[] = new int[6];System.arraycopy(ints,1,ints1,1,4);//使用流操作将 `ints1` 数组的每个元素输出到控制台。Arrays.stream(ints1).forEach(System.out::println);}
​
}

BigDecimal类

BigDecimal 类位于 java.math 包中,是 Java 中用于精确表示任意精度的十进制数的类。它提供了高精度的算术运算,适用于需要精确计算或者不希望因为浮点数计算带来的精度问题而影响计算结果的场景。

常见方法格式及用法

  1. 构造方法

    public BigDecimal(String val)

    参数: val - 要表示的数值的字符串形式。

    功能: 根据给定的字符串创建一个 BigDecimal 对象。

    BigDecimal num1 = new BigDecimal("123.45");
    BigDecimal num2 = new BigDecimal("678.90");
    ​
    //也可以用下面的方法创建
    Double a = 2.0;
    Double b = 1.1;
    //创建BigDecimal对象,一定要用字符串,不能用double,否则精度依然会丢失
    BigDecimal bigDecimal = new BigDecimal(a.toString());
    BigDecimal bigDecimal1 = new BigDecimal(b.toString());
  2. 加法操作

    public BigDecimal add(BigDecimal augend)

    返回值: 加法结果的 BigDecimal 对象。

    参数: augend - 要加的 BigDecimal 对象。

    功能: 将当前 BigDecimal 对象与参数相加。

    BigDecimal sum = num1.add(num2);
  3. 减法操作

    public BigDecimal subtract(BigDecimal subtrahend)

    返回值: 减法结果的 BigDecimal 对象。

    参数: subtrahend - 要减的 BigDecimal 对象。

    功能: 从当前 BigDecimal 对象中减去参数。

    BigDecimal difference = num1.subtract(num2);
  4. 乘法操作

    public BigDecimal multiply(BigDecimal multiplicand)

    返回值: 乘法结果的 BigDecimal 对象。

    参数: multiplicand - 要乘的 BigDecimal 对象。

    功能: 将当前 BigDecimal 对象与参数相乘。

    BigDecimal product = num1.multiply(num2);
  5. 除法操作

    public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)

    返回值: 除法结果的 BigDecimal 对象。

     

    参数

    divisor - 要除的 BigDecimal 对象。

    roundingMode - 舍入模式,用于确定如何处理除法的结果。

    功能: 将当前 BigDecimal 对象除以参数。

    BigDecimal quotient = num1.divide(num2, RoundingMode.HALF_UP);
  6. 比较操作

    public int compareTo(BigDecimal val)

    返回值

    负整数,如果当前对象小于参数。

     零,如果当前对象等于参数。

    正整数,如果当前对象大于参数。

    参数: val - 要比较的 BigDecimal 对象。

    功能: 将当前 BigDecimal 与参数进行比较。

    int comparison = num1.compareTo(num2);

  7. 转换为字符串

    public String toString()

    返回值: 表示当前 BigDecimal 对象值的字符串。

    功能:BigDecimal 对象转换为字符串形式。

    String num1Str = num1.toString();

示例

import java.math.BigDecimal;
import java.math.RoundingMode;
​
public class BigDecimalExample {public static void main(String[] args) {BigDecimal num1 = new BigDecimal("123.45");BigDecimal num2 = new BigDecimal("678.90");// 加法BigDecimal sum = num1.add(num2);System.out.println("Sum: " + sum);// 减法BigDecimal difference = num1.subtract(num2);System.out.println("Difference: " + difference);// 乘法BigDecimal product = num1.multiply(num2);System.out.println("Product: " + product);// 除法BigDecimal quotient = num1.divide(num2, RoundingMode.HALF_UP);System.out.println("Quotient: " + quotient);// 比较int comparison = num1.compareTo(num2);System.out.println("Comparison result: " + comparison);// 转换为字符串String num1Str = num1.toString();System.out.println("num1 as String: " + num1Str);}
}

Calendar类

在Java中,Calendar 类位于 java.util 包中,是一个抽象类,用于处理日期和时间的操作。

虽然它是抽象类,但可以通过静态工厂方法 getInstance() 获得 Calendar 类的实例,该方法根据当前时区和语言环境返回一个适当类型的日历对象。Calendar 类允许我们进行日期字段(如年、月、日)的操作,还可以进行日期之间的计算和比较。Calendar 类的常见方法可以帮助我们获取和设置日期信息、进行日期计算等操作。

常见方法格式

下面是一些常见方法的格式,包括权限修饰符、返回值类型、方法名和参数类型。

  1. 获取和设置日期字段

    • 权限 返回值 方法名(参数类型)

      public int get(int field):获取给定字段的值,如年、月、日等。

      public void set(int field, int value):设置给定字段的值为指定值。

      public void add(int field, int amount):根据日历规则,将指定字段增加或减少指定的时间量。

      public void roll(int field, boolean up):增加或减少指定字段的值,而不影响更大的字段。

      示例用法:

      Calendar cal = Calendar.getInstance();
      int year = cal.get(Calendar.YEAR);
      int month = cal.get(Calendar.MONTH); // 注意:月份从 0 开始
      cal.set(Calendar.DAY_OF_MONTH, 1); // 设置日期为本月的第一天
      cal.add(Calendar.DAY_OF_MONTH, 7); // 增加一周

  2. 比较和判断

    • 权限 返回值 方法名(参数类型)

      public boolean before(Object when):比较当前日历是否在指定日历之前。

      public boolean after(Object when):比较当前日历是否在指定日历之后。

      public boolean equals(Object obj):比较两个日历对象是否表示相同的日期时间。

      示例用法:

      Calendar cal1 = Calendar.getInstance();
      Calendar cal2 = Calendar.getInstance();
      cal2.add(Calendar.DAY_OF_MONTH, 1);
      if (cal1.before(cal2)) {System.out.println("cal1 is before cal2");
      }

  3. 格式化和输出

    • 权限 返回值 方法名(参数类型)

      public String toString():返回表示此 Calendar 的字符串描述。

      public void setTime(Date date):使用给定的 Date 设置此 Calendar 的时间。

      public Date getTime():返回表示此 Calendar 的时间值(作为 Date 对象)。

      示例用法:

      Calendar cal = Calendar.getInstance();
      System.out.println("Current date and time: " + cal.getTime());

示例

import java.util.Calendar;
​
public class CalendarExample {public static void main(String[] args) {Calendar cal = Calendar.getInstance();// 获取当前日期和时间System.out.println("Current date and time: " + cal.getTime());// 获取年、月、日int year = cal.get(Calendar.YEAR);int month = cal.get(Calendar.MONTH); // 月份从 0 开始int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);System.out.println("Year: " + year + ", Month: " + (month + 1) + ", Day: " + dayOfMonth);// 设置日期为本月第一天cal.set(Calendar.DAY_OF_MONTH, 1);System.out.println("First day of the month: " + cal.getTime());// 增加一周cal.add(Calendar.DAY_OF_MONTH, 7);System.out.println("After adding a week: " + cal.getTime());// 比较两个 Calendar 对象Calendar anotherCal = Calendar.getInstance();anotherCal.add(Calendar.DAY_OF_MONTH, 1);if (cal.before(anotherCal)) {System.out.println("cal is before anotherCal");}}
}

相关文章:

System类、BigDecimal类、Calendar类 用法详解

System类 System 类是Java中的一个核心类&#xff0c;提供了访问与系统相关的一些属性和方法。它包含了一些静态字段和静态方法&#xff0c;用于获取系统的标准输入、标准输出、标准错误流&#xff0c;以及加载动态链接库和系统属性等功能。 常见方法&#xff1a; public stat…...

SQLTools插件下载与使用说明

SQLTools是一个专注于SQL优化与管理的plsql developer插件&#xff0c;目的是把一些常用的SQL收集在一起&#xff0c;方便快速解决问题&#xff0c;提高工作效率。 当在SQL或PACKAGE窗口,或者选中表时&#xff0c;会有两个右键菜单&#xff1a; SQLTools聚焦在SQL方面&#xf…...

【人脸识别】数据集宝藏合集,速看!

本文将为您介绍10个经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 1 26,090张人脸肤质缺陷采集数据【数据堂】 发布方&#xff1a; 数据堂&#xff08;北京&#xff09;科技股份有限公司 发布时间&#xff1a; 2021 简介&#xff1a; 26,090张人脸…...

mysql操作(进阶)

1.数据库约束 数据库自动对数据的合法性进行校验检查的一系列机制&#xff0c;目的是为了保证数据库中能够避免被插入或者修改一些非法数据。 &#xff08;1&#xff09;mysql中提供了以下的约束&#xff1a; a.NOT NULL&#xff1a;指定某列不能为null b.UNIQUE&#xff1…...

[000-01-025].第07节:WorkBench

我的后端学习大纲 我的Drools学习大纲 8. WorkBench 8.1 WorkBench简介: 1.WorkBench是KIE组件中的元素&#xff0c;也称为KIE-WB&#xff0c;是Drools-WB与JBPM-WB的结合体。它是一个可视化的规则编辑器。WorkBench其实就是一个war包&#xff0c;安装到tomcat中就可以运行。…...

JavaScript - 变量声明(let、const 和其他)

目录 一、引言 1. let 的作用 2. const 的作用 3. let 与 const 的选择 4. let 和 const 的性能 5. var, let, const 的对比 6. 常见误区 二、其他变量定义 1. var 关键字 2. 全局对象属性 3. 使用 IIFE&#xff08;立即调用函数表达式&#xff09; 4. ES6 模块 总结 …...

AC800PEC PC D231 3BHE025541R0101控制模块面价

AC800PEC PC D231 3BHE025541R0101控制模块面价 AC800PEC PC D231 3BHE025541R0101控制模块面价 AC800PEC PC D231 3BHE025541R0101控制模块面价 AC800PEC PC D231 3BHE025541R0101控制模块引脚线 AC800PEC PC D231 3BHE025541R0101控制模块说明书 AC800PEC PC D231 3BHE0…...

2024年3款免费录屏软件,你的电脑桌面上缺哪一个?

现在&#xff0c;不管是上网课、在家工作&#xff0c;还是拍视频&#xff0c;录屏软件都变得越来越重要了。想做个教学视频、录个操作指南&#xff0c;或者录个游戏的高光时刻&#xff0c;好的录屏软件都能帮你轻松搞定。这篇文章就是要聊聊免费录屏软件一般都有啥功能&#xf…...

Python爬虫新手指南及简单实战

网络爬虫是自动化获取网络信息的高效工具&#xff0c;Python因其强大的库支持和简洁的语法成为编写网络爬虫的首选语言。本教程将通过一个具体的案例&#xff08;基于Microsoft Edge浏览器的简单爬取&#xff09;&#xff0c;指导你使用Python实现一个完整的网络爬虫&#xff0…...

如何有效开展产业链招商?

产业链招商是一种以产业大数据为依托、以产业链图谱为基础、以产业链分析为核心、以完善产业链结构为目标的招商引资方式。相比于传统招商模式&#xff0c;产业链招商比拼的并不是土地、政策优惠&#xff0c;而是以产业链分析为核心&#xff0c;诊断区域产业链结构及长短板&…...

爬虫中使用多进程、多线程的混合方式遇到的数据丢失问题

项目场景&#xff1a; 网络爬虫项目&#xff0c;主要实现多进程、多线程方式快速缓存网页资源到MongoDB&#xff0c;并解析网页数据&#xff0c;将信息写入到csv文件中。 问题描述 在单独使用多线程的过程中&#xff0c;是没有问题的&#xff0c;比如这个爬虫示例是爬取豆瓣电…...

多云应用安全平台RegData利用MongoDB简化数据控制和合规流程

在高度规范化市场中&#xff0c;为了保障数据安全&#xff0c;企业可能需要部署一系列繁琐且成本高昂的IT基础设施系统。随着各项数据安全保护措施的出台&#xff0c;企业需要遵守的法规数量越多&#xff0c;尤其是跨越多个地域的企业&#xff0c;其IT基础设施就会越复杂。如今…...

VUE实现TAB切换不同页面

VUE实现TAB切换不同页面 实现效果 资源准备 ReceiveOrderList, TodoListMulti, SignList 这三个页面就是需要切换的页面 首页代码 <template><div><el-tabs v-model"activeTab" type"card" tab-click"handleTabClick"><…...

C++ 80行 极简扫雷

一共5346个字符&#xff0c;MinGW编译通过&#xff08;强烈不建议写这种代码&#xff01;&#xff01;&#xff01;&#xff09; 压行规则&#xff1a;一行不超过80个字符 代码&#xff1a; #include<windows.h> #include<stdio.h> #include<time.h> #def…...

常见VPS服务器附加组件一览

网络主机行业竞争非常激烈&#xff0c;因此主机服务提供商竭尽全力为客户提供完整的解决方案&#xff0c;其中包含构建和管理在线项目所需的一切。但客户通常有特定需求&#xff0c;因此需要不同的附加组件。在管理自己的网络服务器时尤其如此。 今天&#xff0c;我们将介绍您…...

Electron 使用Electron-build 进行打包

看完下面两篇就可以完成&#xff01; 基于vue3vite的web项目改为Electron桌面应用&#xff08;一&#xff09;_vue3转electron-CSDN博客 将web项目打包成electron桌面端教程&#xff08;二&#xff09;vue3vitets_vue3 打包桌面端-CSDN博客 打包报错 1. 首先确定依赖包 npm …...

Springboot+Websocket+Security+Vue 实现弹幕推送功能

后端部分 (Spring Boot) 1. 创建一个 Spring Boot 项目 创建一个新的 Spring Boot 项目并添加以下依赖&#xff1a; <dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId…...

LangChain之网络爬虫

网络爬虫 概述 网络爬虫是LangChain中的一项关键功能&#xff0c;允许用户自动从互联网上收集信息。这项功能对于研究和数据收集尤其有价值&#xff0c;因为它可以大幅减少手动搜索和信息整理的工作量。 从网络收集内容有几个主要组件&#xff1a; Search搜索&#xff1a;使用…...

VueRouter 相关信息

VueRouter 是Vue.js官方路由插件&#xff0c;与Vue.js深度集成&#xff0c;用于构建单页面应用。构建的单页面是基于路由和组件&#xff0c;路由设定访问路径&#xff0c;将路径与组件进行映射。VueRouter有两中模式 &#xff1a;hash 和 history &#xff0c;默认是hash模式。…...

[环境配置]Pycharm:Failed to start [PowerShell.exe]

解决方法&#xff0c;点Local旁边的 号&#xff0c;点击Command Prompt&#xff0c;即可在Pycharm中呼出控制台。 如果要修改Command Prompt的启动时访问的cmd.exe的路径&#xff0c;可以去Settings→Tools→Terminal中&#xff0c;修改Shell Path实现&#xff0c;改为cmd.exe…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...