当前位置: 首页 > 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…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...