Java学习day21:System类、Runtime类、Date类、Calendar类(知识点详解)

声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点+题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!)


往期回顾

Java学习day20:常用数据类型的包装类、Math类、Random类(知识点详解)-CSDN博客

Java学习day19:StringBuffer类、枚举类enum(知识点详解)-CSDN博客

Java学习day18:IO流(一篇文章知识点详解)-CSDN博客

 Java学习day21:System类、Runtime类、Date类、Calendar类

一、System类

这个类应该说是我们最熟悉的一个类了,是一个系统类,常用的输入输出都需要依靠这个类。

示例:

new Scanner(System.in);//输入流PrintStream out = System.out;//是一个流 PrintStream 打印流out.println("goudan");System.out.println("goudan");//标准输出流打印的东西System.err.println("xixi");//错误输出流打印的东西

1.常用方法

1.1currentTimeMillis()

 这个获取当前时间的方法用的比较多,能够获取从1970-现在的毫秒数---

示例:

// 在1970年1月1日UTC之间的当前时间和午夜之间的差异,以毫秒为单位long l = System.currentTimeMillis();//2022年到1970年 是不是53System.out.println(l/1000/60/60/24/365);
1.2getProperties()

这个方法能够获取系统的很多东西

示例 

//获取系统的东西  System 英文单词就是系统的意思Properties properties = System.getProperties();//os.name 系统的名字System.out.println(properties.get("os.name"));System.out.println(properties.get("os.version"));System.out.println(properties.get("user.name"));System.out.println(properties.get("user.dir"));System.out.println(properties.get("java.version"));

二、 Runtime类

这个类不重要,了解一下就是,注意这个类获取对象的方式,不再是new而是通过调用方法获取对象。

示例:

public class Demo1 {public static void main(String[] args) throws IOException {//1.获取runtime对象Runtime runtime = Runtime.getRuntime();//runtime对象可以启动咱们电脑上面任意的一个软件//使用代码启动软件runtime.exec("C:\\Program Files (x86)\\Notepad++\\notepad++.exe");//返回Java虚拟机将尝试使用的最大内存量。字节数System.out.println(runtime.maxMemory() / 1024 / 1024);//MB//返回Java虚拟机中的可用内存量 字节数System.out.println(runtime.freeMemory()/1024/1024);//返回Java虚拟机中的内存总量 字节数System.out.println(runtime.totalMemory()/1024/1024);}
}

三、Date类 

这是专门处理日期的一个类,不过好多方法已经过期了,过期了的java代码里会有一条横杠。

在类的所有方法`Date`接受或返回年,月,日,小时,分钟和秒值,以下表述中使用:
 

1.年月日时分秒的表示 

*y*年代表整数*y* `- 1900` 。
一个月由0到11的整数表示; 0是1月,1是2月,等等; 
日期(月的一天)以通常的方式从1到31的整数表示。
一小时由0到23之间的整数表示。因此,从午夜到凌晨1点的时间是小时0,从中午到下午1点的小时是12小时。
分钟一般以0〜59的整数表示。
秒由0到61的整数表示; 值60和61仅发生在闰秒上,甚至仅在实际上正确跟踪闰秒的Java实现中发生。 由于目前引入闰秒的方式,在同一分钟内不会发生两个闰秒,但是本规范遵循ISO C的日期和时间约定。

 示例:

import java.util.Date;public class Main {public static void main(String[] args) throws IOException {Date date = new Date();//Sat Dec 23 20:53:29 CST 2023System.out.println(date);System.out.println(date.getYear()+1900);//2023//歪果仁从0开始算的System.out.println(date.getMonth());//11//获取的是这个日期的星期几System.out.println(date.getDay());//6//时分秒是正确的System.out.println(date.getHours());//20System.out.println(date.getMinutes());//53System.out.println(date.getSeconds());//29}}
}

四、Calendar 

现在国际通用的日期类是Calendar类

注意Calender也是通过调用方法获取类对象的

示例:

public class Main {public static void main(String[] args) throws IOException {Calendar calendar = Calendar.getInstance();//获取当前的年份int year=calendar.get(Calendar.YEAR);System.out.println(year);//2023//获取月份  需要加1的System.out.println(calendar.get(Calendar.MONTH)+1);//12//获取当月的第几天System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//23//获取这周的第几天  漂亮国的周日是第1天System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//7//获取这一年的第几天System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//357//获取时分秒System.out.println(calendar.get(Calendar.HOUR));//9System.out.println(calendar.get(Calendar.MINUTE));//1System.out.println(calendar.get(Calendar.SECOND));//6}

重要一点的,用Calendar获取当前时间但是返回date类型对象,同时通过一个类SimpleDateFormat(日期格式化类)又可以将Date对象规范格式

示例:

        //重要的方法  获取当前的时间的 返回值是Date类型的数据//可以转为Date类型的数据Date time = calendar.getTime();System.out.println(time);//Tue Aug 09 16:40:21 IRKT 2022//这上面时间 对程序员相当不友好!!!//通过一个类将日期格式转换一下SimpleDateFormat sdf = new SimpleDateFormat("yyyy—MM-dd HH:mm:ss");//yyyy-MM-dd HH:mm:ss//年-月-天 时:分:秒//2022-08-09  16:43:32//将这个格式Tue Aug 09 16:40:21 IRKT 2022//转换为2022-08-09  16:43:32String format = sdf.format(time);System.out.println(format);//yyyy-MM-dd HH:mm:ss//以上能不能胡乱写?不能//以后开发中要用的!!

例题:输入两个日期计算出两个日期相差多少天

老规矩,先自己敲,再看我的参考。

 参考:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Demo3 {public static void main(String[] args) throws ParseException {//输入两个日期计算出两个日期相差多少天SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//将一个字符串类型的数据变成一个Date类型的数据Date strat = sdf.parse("2012-08-01");Date end = sdf.parse("2022-08-09");//一定要将字符串转为Date类型 才能按照日期来算//将Date类型的数据转为时间戳了,//为啥转为时间戳?因为时间戳是一个long类型数据可以想减!!!//算两个时间的间隔,相减。转为int或者long才能转long startTime = strat.getTime();long endTime = end.getTime();//毫秒数long num = endTime - startTime;System.out.println(num/1000/60/60/24);}
}

SimpleDateFormat是日期规范类,规定了年得是小写的yyyy,我最开始用大写的YYYY算出来结果就是0,不知道是否有人跟我犯了一样的错误,注意注意。


以上,就是今天的所有知识点了。在这几个类中,System类和Calendar类是java知识点中常用的类,大家得多花点时间,静下心看代码,写代码,多理解。

加油吧,预祝大家变得更强!

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

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

相关文章

主从数据库MySQL服务重启步骤与注意事项

主从数据库MySQL服务重启步骤与注意事项 实验环境: 172.20.26.34 (主应用服务器) 172.20.26.26 (备应用服务器) 172.20.26.37 (主库服务器) 172.20.26.38 (从库服务器&…

迅为3588开发板Ubuntu安装Docker

在使用迅为 RK3588 开发板的时候,我们一般采用的是虚拟机安装 Ubuntu20.04 来编译 Android 源码或者 linux 源码,但是编译源码最让人头疼的是主机环境问题。假如我手上有很 多块开发板,每个开发板都使用不同的编译环境,而我本地电…

Java 类的加载流程

一、类的加载 指的是将类的.class 文件中的二进制 数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创 建一个 java.lang.Class 对象,用来封装类在方法区内的数据结构。 类从被加载到虚拟机内存中开始,到卸载出内…

自己实现的小功能

小功能实现 2024/1/31 问题一: 将文本模式的csv文件作为表编辑之后,先要再变回来。找了5分钟都没找到,去网上搜也没搜到 解决方案 复制一份,对没错。 不是把表遍历一遍,重新将数据写入。 3.5给的答案就是重新写入…

C,C++,C# 的区别

C,C,C# 是三种不同的编程语言。它们有一些共同点,但也有很多区别。 C是一种过程式编程语言,被广泛用于系统级编程和嵌入式开发。它具有简单的语法和较小的标准库,适合于高效的低级编程和处理底层细节。 C是一种面向对…

C#小结:ScottPlot 5.0在VS2022桌面开发的应用(以winform为例)

目录 一、官网文档地址 二、在VS2022中安装Scottplot 三、拖动Scottplot 四、使用Scottplot 五、效果图 一、官网文档地址 官网地址:ScottPlot 5.0 食谱 本文内容来自于官网,选取了官网的一些比较好用的功能展示,如需学习更多功能&a…

深度学习(9)--pydot库和graphviz库安装流程详解

目录 一.pydot库安装 二.graphviz库安装 一.pydot库安装 pydot的安装可直接在编译器安装相关包,以PyCharm举例: 如果搜索可用软件包显示为空,记得在此处把使用Conda软件包管理器”点亮 二.graphviz库安装 点击链接下载安装包graphviz-2.38…

一个程序入库出现死锁问题的排查

某虚拟化部署的服务群,发现其中一个程序在写数据库时,经常有死锁现象,一旦出现,持续时间长达数分钟。当时没时间排查,一直到年底才解决。后面又忙,直到月底才有点时间总结。抛开起初没找到问题的时间外&…

机器学习复习(3)——分类神经网络与drop out

完整的神经网络 以分类任务为例,神经网络一般包括backbone和head(计算机视觉领域) 下面的BasicBlock不是一个标准的backbone,标准的应该是复杂的CNNs构成的 Classfier是一个标准的head,其中output_dim表示分类类别,一般写作num…

嵌入式——模拟/数字转换器(ADC)补充

目录 一、ADC简介 二、ADC功能 1.电压输入范围 2.输入通道 3. 转换顺序 (1)规则序列 (2) 注入序列 4.触发源 5. 转换时间 (1) ADC时钟 (2) 采样时间 6. 数据寄存器 &am…

leetcode2670找出不同元素数目差数组

题目链接 2670. 找出不同元素数目差数组 - 力扣(LeetCode) 解题思路 暴力破解 class Solution:def distinctDifferenceArray(self, nums: List[int]) -> List[int]:mapbefore [1] * len(nums)tmp [nums[0]]for i in range(1,len(nums)):if nums…

jquery的9大选择器

1. 基本选择器  基本选择器是JQuery最常用的选择器,也是最简单的选择器,它通过元素id、class和标签名来查找DOM元素(在网页中id只能使用一次,class允许重复使用)。所谓的网页中id只能使用一次的意思是说,一…

抗体亲和力成熟制备高亲和力抗体-泰克生物

1.什么是抗体亲和力? 抗体亲和力是指抗体与抗原表位或抗原决定簇的结合强度,其实质是一种包含氨基酸间结合力——氢键、疏水性作用力等的非共价作用力。抗体亲和力的强弱取决于抗体与所用抗原表位的配合程度,其决定因素包括接触面积的大小、亲…

Linux实验记录:使用firewalld

前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: RHEL8系统中集成了多款防火墙管理工具&#xf…

【前端-VUE+TS】Vue3组件化-下(五)

一. 插槽的使用 1.1. 认识插槽slot 在开发中,我们会经常封装一个个可复用的组件: 前面我们会通过props传递给组件一些数据,让组件来进行展示;但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的d…

【buuctf Reverse】Java逆向解密wp

Java逆向解密 https://buuoj.cn/challenges#Java%E9%80%86%E5%90%91%E8%A7%A3%E5%AF%86 附件只有一个Reverse.class 用IntelliJ打开就能看到JAVA源码 这里就是生成flag的地方 int result arr[i] 64 ^ 32; 这个运算的逆运算难搞 注意运算的优先级,先运算在^ 代码…

GO EASY 框架 之 NET 05

目录 1、Overview 2、Agent接口源码 3、收发消息 4、AgentHandle接收函数 5、conns.Conn接口 1、Overview 名称:agent.Agent 网络链接 接口; DESC:网络链接,服务端与客户端通信媒介; 封装:进一步封…

图书管理系统(ArrayList和LinkedList)--versions3.0

目录 一、项目要求: 二、项目环境 三、项目使用的知识点 四、项目代码 五、项目运行结果 六、项目难点分析 图书管理系统--versions1.0: 图书管理系统--versions1.0-CSDN博客文章浏览阅读981次,点赞29次,收藏17次。本文使用…

动态代理IP服务使用优势有哪些?

动态代理IP具备以下使用优势: 1. 频繁更换IP:动态代理IP服务会定期或按需自动更换用户的IP地址,这有助于避免因为单一IP地址频繁访问同一网站而导致的IP被封禁问题,特别适用于网络爬虫、数据抓取和SEO优化等场景。 2. 反反爬策略&…

5G智慧钢铁厂数字孪生三维可视化,推进钢铁新型工业化数字化转型

5G智慧钢铁厂数字孪生三维可视化,推进钢铁新型工业化数字化转型。随着科技的不断发展,数字化转型已经成为钢铁企业转型升级的必经之路。而5G技术的广泛应用,为钢铁企业数字化转型提供了新的机遇。其中,5G智慧钢铁厂数字孪生三维可…