Java入门需要了解(Java常用类-三十四)

System

介绍

System 类包含一些有用的类字段和方法都是静态的。它不能被实例化

标准输出流 out

  • PrintStream out 此流已打开并准备接受输出数据
  • 使用方式 System.out.println(data)

标准输入流 in

  • InputStream in 此流已打开并准备提供输入数据

当前时间

  • long currentTimeMillis() 返回以毫秒为单位的当前时间
  • 当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差

获取系统属性信息

  • 确定当前的系统属性
  • 获取的属性都是固定的 链接: 参考文档.
  • getProperties()存储的都是String类型的key和value
    eg:
//Properties  是Map的子类,其值是key-value形式的
 Properties p =  System.getProperties();
        for(Map.Entry<Object,Object> entry:p.entrySet()){
            System.out.println("key:"+entry.getKey()+"value = " + entry.getValue());
        }

Runtime 类

Runtime类介绍

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例,没有构造方法,构造函数被私有化了,这是单利模式的一种使用
eg:Runtime.getRuntime();

Runtime类的大部分方法都是非静态的

Runtime实例能做什么事情

  • 启动一个本地的程序
  • 例如下面一段代码可以在Windows系统下启动本地的记事本程序。如果找不到则会抛出 IOException 异常
 Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec("notepad");
            //也可以通过指定绝对路径来启动一个程序
            //runtime.exec("e:\\program\\test.exe");
            
            //通过指定的程序解析指定的文件
 			//runtime.exec("notepad e:\\test.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }

Runtime.exec(String command)

  • 是一个很有用的方法,他在单独的进程中执行指定的字符串命令(command - 一条指定的系统命令),一个新的 Process 对象,用于管理子进程
  • Runtime.exec(String command) 返回的 Process 对象,可以对启动的进程进行管理 能管理自己启动的进程

Runtime.maxMemory()

返回 Java 虚拟机试图使用的最大内存量

Runtime.totalMemory()

返回 Java 虚拟机中的内存总量

Runtime.totalMemory()

返回 Java 虚拟机中的空闲内存量

Runtime.gc()

运行垃圾回收器

Math 类

Math 类包含用于执行基本数学运算的静态方法,如初等指数、对数、平方根和三角函数

Math.abs(x)

返回 x 值的绝对值

Math.ceil(double a)

返回大于等于参数的最小整数的double值
eg:

System.out.println("ceil 12.0004 = " + Math.ceil(12.0004));

结果为:ceil 12.0004 = 13.0

Math.floor(double a)

返回小于等于参数的最小整数的double值
eg:

System.out.println("floor 12.0004 = " + Math.floor(12.0004));

结果为:ceil 12.0004 = 12.0

Math.round(double a)

返回返回四舍五入的整数的double值
eg:

System.out.println("round 12.4994 = " + Math.round(12.4994));
System.out.println("round 12.511 = " + Math.round(12.511));

结果:
round 12.4994 = 12
round 12.511 = 13

Math.random()

返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布,(伪随机数:看起来比较杂乱无章,但是只要次数足够多,就能找到其规律的随记数)
题外话:Java中有一个转门用于产生随机数的类:java.util.Random

Date类

Date 类介绍

java.util.Date 类表示特定的瞬间,精确到毫秒
从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃

在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:

  • 年份 y 由整数 y - 1900 表示。
  • 月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
  • 日期(一月中的某天)按通常方式由整数 1 至 31 表示。
  • 小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
  • 分钟按通常方式由 0 至 59 的整数表示。
  • 秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定

Date 日期和毫秒的相互转换

  • 毫秒转日期方式1:new Date(timeMilli) :
  • 毫秒转日期方式2:new Date().setTime(timeMilli)
  • 日期转毫秒 date.getTime()

Date 日期格式化字符串

Date类中的很多方法都已经过时,而格式化我们使用的是
DateFormat类

  • 获取日期格式器:DateFormat dateFormat = DateFormat.getDateInstance();
  • 格式化为字符串: String dateStr = dateFormat .format(date)
  • 格式化(只有年月日的)eg:
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateInstance();
        String dateStr = dateFormat.format(date);
        System.out.println("dateStr = " + dateStr);

结果为:dateStr = 2021-1-14
这是默认的格式

  • 格式化(只有年月日时分秒的)eg:
 		Date date = new Date();
 		//这里使用了getDateTimeInstance()方法
        DateFormat dateFormat = DateFormat.getDateTimeInstance();
        String dateStr = dateFormat.format(date);
        System.out.println("dateStr = " + dateStr);

结果为:
dateStr = 2021-1-14 12:03:54

  • 获取指定格式化风格的时间格式化器eg
        {
            Date date = new Date();
            DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
            String dateStr = dateFormat.format(date);
            System.out.println("dateStr = " + dateStr);
        }
        {
            Date date = new Date();
            DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
            String dateStr = dateFormat.format(date);
            System.out.println("dateStr = " + dateStr);
        }

结果:
dateStr = 2021年1月14日 星期四
dateStr = 2021年1月14日 星期四 下午12时14分21秒 CST

Date 日期自定义格式化 SimpleDateFormat()

  • 字母对应的时间元素
标识名称表示示例
GEra 标志符TextAD
yYear1996; 96
M年中的月份MonthJuly; Jul; 07
w年中的周数Number27
W月份中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday; Tue
aAm/pm 标记TextPM
H一天中的小时数(0-23)Number0
k一天中的小时数(1-24)Number24
Kam/pm 中的小时数(0-11)Number0
ham/pm 中的小时数(1-12)Number12
m小时中的分钟数Number30
s分钟中的秒数Number55
S毫秒数Number978
z时区General time zonePacific Standard Time; PST; GMT-08:00
Z时区RFC 822 time zone-0800
  • 自定义格式化eg:
        DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        System.out.println("dateFormat = " + dateFormat.format(new Date()));

结果:
dateFormat = 2021年01月14日 14时35分22秒

字符串转为 Date

  • 将默认格式的日期字符串转成 Date 对象
   DateFormat dateFormat = DateFormat.getDateInstance();
        try {
            Date  date =dateFormat.parse("2021-11-22");
            System.out.println("date = " + date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

结果:
date = Mon Nov 22 00:00:00 CST 2021

  • 解析自定义格式的日期字符串
DateFormat dateFormat = new SimpleDateFormat("yyyy##MM##dd");
        try {
            Date  date =dateFormat.parse("2021##11##22");
            System.out.println("date = " + date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

结果:
date = Mon Nov 22 00:00:00 CST 2021

两个日期之间间隔多少天

  • 通过毫秒差的绝对值来计算
	DateFormat dateFormat = DateFormat.getDateInstance();
	Date d1 = dateFormat.parse("2020-12-12");
	Date d2 = dateFormat.parse("2020-11-11");
	long subTime = Math.abs(d1.getTime()-d2.getTime());
	long day = subTime/1000/60/60/24;
	System.out.println("day = " + day);

结果:
day = 31

Calendar 类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法

时间偏移计算

  • 可以使用三种方法更改日历字段: set()、 add() 和 roll()。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值