首页 > 编程语言 >【JAVA】第五天

【JAVA】第五天

时间:2024-09-11 10:51:53浏览次数:13  
标签:JAVA BigDecimal System static println 第五天 public out

【JAVA】第五天

一、Math类

表格:

方法名作用
public static int abs​(int a)获取参数绝对值
public static double ceil​(double a)向上取整
public static double floor​(double a)向下取整
public static int round​(float a)四舍五入
public static int max​(int a,int b)获取最大值
public static int min(int a,int b)获取最小值
public static double pow​(double a,double b)返回a的b次幂的值
public static double random​()返回值为double的随机值,范围[0.0,1.0)

用法:

    public static void main(String[] args) {
        // 绝对值
        System.out.println(Math.abs(-1));    // 1
        // 向上取整
        System.out.println(Math.ceil(1.1));  // 2.0
        // 向下取整
        System.out.println(Math.floor(1.5)); // 1.0
        // 四舍五入
        System.out.println(Math.round(1.4)); // 1
        System.out.println(Math.round(1.5)); // 2
        // 获取最大值
        System.out.println(Math.max(2,1));   // 2
        // 获取最小值
        System.out.println(Math.min(2,1));   // 1
        // a的b次幂
        System.out.println(Math.pow(2, 3));  // 8.0
        // 获取随机值
        System.out.println(Math.random());   // [0.0,1.0)
    }

二、System类

表格:

方法名作用
public static void exit​(int status)终止当前运行的Java虚拟机
public static long currentTimeMillis​()返回当前系统的时间毫秒值形式

用法:

    public static void main(String[] args) {
    	
    	// 从1970年1月1日 00:00:00走到此刻的总的毫秒数
    	// 方法一
        System.out.println(System.currentTimeMillis());
        // 方法二
        System.out.println(new Date().getTime());
        
        // 终止Java虚拟机的运行
        System.exit(0);
        
    }

三、Runtime类

表格:

方法名作用
public static Runtime getRuntime()返回与当前Java应用程序关联的运行时对象
public void exit​(int status)终止当前运行的虚拟机
public int availableProcessors()返回Java虚拟机可用的处理器数
public long totalMemory()返回Java虚拟机中的内存总量
public long freeMemory()返回Java虚拟机中的可用内存
public Process exec​(String command)启动某个程序,并返回代表该程序的对象

用法:

    public static void main(String[] args) throws IOException {
        Runtime r = Runtime.getRuntime();
        System.out.println(r.availableProcessors()); // 获取可用处理器数
        System.out.println(r.totalMemory()); // 获取内存总量
        System.out.println(r.freeMemory()); // 获取可用内存量
        r.exec("QQ"); // 启动QQ
        r.exit(0); // 终止虚拟机的运行
    }

四、BigDecimal类

表格:

构造器作用
public BigDecimal(double val)不推荐)将 double转换为 BigDecimal
public BigDecimal(String val)把String转成BigDecimal
方法名作用
public static BigDecimal valueOf(double val)转换一个 double成 BigDecimal
public BigDecimal add(BigDecimal b)加法
public BigDecimal subtract(BigDecimal b)减法
public BigDecimal multiply(BigDecimal b)乘法
public BigDecimal divide(BigDecimal b)除法
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式)除法、可以控制精确到小数几位
public double doubleValue()将BigDecimal转换为double

用法:

    public static void main(String[] args) {

        // String 转 BigDecimal
        BigDecimal bd1 = new BigDecimal("0.1");
        System.out.println(bd1); // 0.1

        // double 转 BigDecimal
        BigDecimal bd2 = BigDecimal.valueOf(0.2);
        System.out.println(bd2); // 0.2

        // 相加
        System.out.println(bd2.add(bd1)); // 0.3

        // 相减
        System.out.println(bd2.subtract(bd1)); // 0.1

        // 相乘
        System.out.println(bd2.multiply(bd1)); // 0.02

        // 除法一
        System.out.println(bd2.divide(bd1)); // 2

        // 除法二
        System.out.println(bd2.divide(bd1,1, RoundingMode.CEILING)); // 2.0

        // BigDecimal 转 double
        System.out.println(bd1.doubleValue()); // 0.1
    }

BigDecimal 解决浮点型运算时,出现结果失真的问题

五、JDK8之前传统的日期、时间(不推荐

1.Date类

表格:

构造器作用
public Date()创建一个Date对象,为当前系统时间
public Date(long time)把时间毫秒值转换成Date日期对象
方法名作用
public long getTime()返回从1970年1月1日 00:00:00走到此刻的总的毫秒数
public void setTime(long time)设置日期对象的时间为当前时间毫秒值对应的时间

用法:

    public static void main(String[] args) {
        Date d1 = new Date();
        System.out.println(d1); // 当前系统时间

        Date d2 = new Date(1000);
        System.out.println(d2); // 1970 加上 1000毫秒的时间

        System.out.println(d1.getTime()); // 1970 到当前时间的毫秒值

        d1.setTime(1000); // 重新设置d1的时间
        System.out.println(d1);
    }

2.SimpleDateFormat类

表格:

构造器作用
public SimpleDateFormat​(String pattern)创建简单日期格式化对象,并封装时间的格式
方法名作用
public final String format(Date date)将日期格式化成日期/时间字符串
public final String format(Object time)将时间毫秒值式化成日期/时间字符串
public Date parse​(String source)把字符串时间解析成日期对象

用法:

    public static void main(String[] args) throws ParseException {

        // 创建格式化对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE a");

        // 获取时间
        Date d = new Date();

        // 时间格式化成字符串
        String format = sdf.format(d);
        System.out.println(format); // 2024-09-10 19:20:59 周二 下午

        // 获取从1970年到现在系统时间的毫秒
        long time = d.getTime();

        // 时间毫秒格式化成字符串
        String format1 = sdf.format(time);
        System.out.println(format1); // 2024-09-10 19:20:59 周二 下午

        // 字符串转成日期对象
        Date parse = sdf.parse(format);
        System.out.println(parse); // Tue Sep 10 19:20:59 CST 2024
    }

y —— 年
M —— 月
d —— 日
H —— 时
m —— 分
s —— 秒
EEE —— 周几
a —— 上午/下午

3.Calendar类

表格:

方法名作用
public static Calendar getInstance()获取当前日历对象
public int get(int field)获取日历中的某个信息
public final Date getTime()获取日期对象
public long getTimeInMillis()获取时间毫秒值
public void set(int field,int value)修改日历的某个信息
public void add(int field,int amount)为某个信息增加/减少指定的值

用法:

    public static void main(String[] args) {
        
        // 创建获取日历对象
        Calendar c = Calendar.getInstance();
        
        System.out.println(c); // ...YEAR=2024,MONTH=8...
        
        System.out.println(c.get(Calendar.YEAR)); // 2024
        
        System.out.println(c.getTime()); // Tue Sep 10 19:33:11 CST 2024
        
        System.out.println(c.getTimeInMillis()); // 1725968029529
        
        // 修改日历中指定的值
        c.set(Calendar.MONTH,10);
        System.out.println(c); // ...YEAR=2024,MONTH=10...
        
        // 为指定的值加减
        c.add(Calendar.YEAR,1);
        System.out.println(c); // ...YEAR=2025,MONTH=10...
        
    }

六、JDK8之后新增的日期、时间

1.LocalDateTime类

用法:

    public static void main(String[] args) {

        // 获取当前系统时间
        LocalDateTime ldt1 = LocalDateTime.now();
        System.out.println(ldt1); // 2024-09-10T19:57:32.190467400

        // 指定时间对象
        LocalDateTime ldt2 = LocalDateTime.of(2024,9,18,12,10,5);
        System.out.println(ldt2); // 2024-09-18T12:10:05

        // 转换成LocalDate
        LocalDate ld = ldt1.toLocalDate();
        System.out.println(ld); // 2024-09-10

        // 转换成LocalTime
        LocalTime lt = ldt1.toLocalTime();
        System.out.println(lt); // 20:08:26.372192300
        
    }

LocalDate、LocalTime
表格:

方法名作用
getYear、getMonthValue、getDayOfMonth、getDayOfYear、getDayOfWeek、getHour、getMinute、getSecond、getNano获取年月日、时分秒、纳秒等
withYear、withMonth、withDayOfMonth、withDayOfYear、withHour、withMinute、withSecond、withNano修改某个信息,返回新日期时间对象
plusYears、plusMonths、plusDays、plusWeeks、plusHours、plusMinutes、plusSeconds、plusNanos把某个信息加多少,返回新日期时间对象
minusYears、minusMonths、minusDays、minusWeeks、minusHours、minusMinutes、minusSeconds、minusNanos把某个信息减多少,返回新日期时间对象
equals isBefore isAfter判断2个时间对象,是否相等,在前还是在后

2.ZoneId类

表格:

方法名作用
public static Set<String> getAvailableZoneIds​()获取Java中支持的所有时区
public static ZoneId systemDefault​()获取系统默认时区
public static ZoneId of​(String zoneId)获取一个指定时区

3.ZonedDateTime类

表格:

方法名作用
public static ZonedDateTime now​()获取当前时区的ZonedDateTime对
public static ZonedDateTime now​(ZoneId zone)获取指定时区的ZonedDateTime对象
getYear、getMonthValue、getDayOfMonth、getDayOfYeargetDayOfWeek、getHour、getMinute、getSecond、getNano获取年月日、时分秒、纳秒等
public ZonedDateTime withXxx(时间)修改时间系列的方法
public ZonedDateTime minusXxx​(时间)减少时间系列的方法
public ZonedDateTime plusXxx​(时间)增加时间系列的方法

4.Instant类

表格:

方法名作用
public static Instant now​()获取当前时间的Instant对象(标准时间)
public long getEpochSecond()获取从1970-01-01 00:00:00开始记录的秒数
public int getNano()从时间线开始,获取从第二个开始的纳秒数
plusMillis plusSeconds plusNanos判断系列的方法
minusMillis minusSeconds minusNanos减少时间系列的方法
equals、isBefore、isAfter增加时间系列的方法

5.DateTimeFormatter类

表格:

方法名作用
public static DateTimeFormatter ofPattern(时间格式)获取格式化器对象
public String format(时间对象)格式化时间
public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)解析时间

6.Period类

表格:

方法名作用
public static Period between(LocalDate start, LocalDate end)传入2个日期对象,得到Period对象
public int getYears()隔几年
public int getMonths()隔几个月
public int getDays()隔多少天

7.Duration类

表格:

方法名作用
public static Duration between(开始时间对象1,截止时间对象2)传入2个时间对象,得到Duration对象
public long toDays()、toHours()、toMinutes()、toSeconds()、toMillis()、toNanos()多少天、多少小时、多少分、多少秒、多少毫秒、多少纳秒

标签:JAVA,BigDecimal,System,static,println,第五天,public,out
From: https://blog.csdn.net/2301_79614134/article/details/142033816

相关文章

  • [JavaScript] 事件委托以及 Vue 列表循环事件绑定的性能优化
    前言事件委托(EventDelegation)是一种通过将事件监听器绑定到父元素,而不是直接绑定到每个子元素上的技术。这样可以减少事件监听器的数量,提升性能,并使得对动态添加或移除的元素更容易进行事件处理。事件冒泡和事件捕获事件冒泡:从里往外<divid="parent"style="padding:50px;......
  • Java八股复习指南-集合
    Java集合MapHashMap实现原理/底层Java1.8之前:数组加链表Java1.8之后:当一个链表的长度超过8,且数组大小超过64时,会将链表转换成红黑树存储,查找效率更高,时间复杂度O(logn)。如果长度超过8,但是数组容量不足64,则会选择扩容数组。定位算法计算key的哈希值,并进行与运算intindex......
  • Java八股复习指南-基础
    Java基础接口和抽象类有什么区别?在设计动机上有所有不同接口是自上而下的设计。我们提前设计了一些行为,于是基于这些行为定义一个接口,一些类需要有这些行为,就会实现这个接口。而抽象类是自下而上的设计。当我们写了很多类时,发现他们有很多的共性,于是把这些逻辑抽象出来,减少代......
  • 计算机毕业设计选题推荐-作品分享交流平台(摄影、绘画、书法)-Java/Python项目实战(亮点:
    ✨作者主页:IT毕设梦工厂✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • 计算机毕业设计选题推荐-企业人事管理系统-Java/Python项目实战
    ✨作者主页:IT毕设梦工厂✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • 动态规划算法之矩阵链乘法详细解读(附带Java代码解读)
    矩阵链乘法(MatrixChainMultiplication)问题是动态规划中的经典问题之一。该问题的核心目标是在给定的矩阵链中,找到一种最优的乘法顺序,使得计算矩阵乘积的标量乘法次数最小。1.问题描述给定一个矩阵链(A1,A2,...,An),要求计算从第一个矩阵A1​到最后一个矩阵An的乘积A1......
  • RuoYi 开源框架,集成了后端管理,后端java版 App 移动解决方案
    文章目录前言一、后端:二、后台管理三、App移动总结前言后端:后台管理:使用的前端技术Vue、Element后端SpringBoot&Security完全分离的权限管理系统。App移动解决方案:采用uniapp框架提示:以下是本篇文章正文内容,下面案例可供参考一、后端:基于SpringBoot,Sprin......
  • 基于Java Swing的简易人事信息管理系统设计与实现1.0
    目录概述数据库设计创建数据库创建表登录表 land员工信息表 empinfoJava代码实现连接数据库的类 Connect登录界面 Login功能对话框 MyDialog主界面 System运行效果截图:结论 概述在软件开发过程中,利用JavaSwing框架构建图形用户界面(GUI)是一种常见的做......
  • JAVA中的八大排序 可视化精华模板 (思路+代码实践)
    “批判他人总是想的太简单剖析自己总是想的太困难”文章目录前言文章有误敬请斧正不胜感恩!1.冒泡排序(时间复杂度o(n^2))概念步骤可视化代码实现2.选择排序(时间复杂度o(n^2))概念步骤可视化代码实现3.插入排序(时间复杂度o(n^2))概念步骤可视化代码示例4.快速排序(时间......
  • Java SE 语法学习
    JavaSE语法java数据类型基本数据类型整数类型byte占1个字节,范围:-128-127short占2个字节,范围:-32768-32767int占4个字节,范围:-2147483648-2147483647long占8个字节,范围:-9223372036854775808-9223372036854775807浮点数类型double占8个字节float占4个字节字符类......