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年 是不是53
        System.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 2023
        System.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());//20
        System.out.println(date.getMinutes());//53
        System.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));//9
        System.out.println(calendar.get(Calendar.MINUTE));//1
        System.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:32
        String 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知识点中常用的类,大家得多花点时间,静下心看代码,写代码,多理解。

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

  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值