1.日期时间类

小知识:在我们日常生活所使用的计算机端时间,实际上是对某一个特定时间的计数,即我们现在的时间离特定时间的间隔,这个间隔被称之为时间戳(timestamp),这个特定时间是:1970-01-01 00:00:00:000。这个间隔被long类型储存,所以我们在计算机类上所看到的时间,实际上是一个long类型的整数型,在经过一些特定的方法后转换为我们能够识别的时间格式。

1.1Date类

Date类可以精确到我们生活中的某个瞬间,时间可精确到毫秒,我们可以通过Date类中的方法来获取年月日,时分秒,亦可利用Date类来创建我们的日历(新旧日历均可)。

1.1.1Date类的实例

public static void main(String[] args) {// 创建一个Date对象,表示当前时间 // 根据当前时区、当前语言环境等创建当前时间Date date1 = new Date();System.out.println(date1);// 获取date1的时间戳long time1 = date1.getTime();System.out.println(time1);// 通过时间戳创建Date对象long ts1 = 0;Date date2 = new Date(ts1);System.out.println(date2);// 需求:请构建一个时间,表示未来一天的当前时间。long ts2 = 24*3600*1000+date1.getTime();Date date3 = new Date(ts2);System.out.println(date3.toString());}

Date是一个类,我们可以直接用它来new对象,同时使用它包含的方法。当然亦可通过时间戳来创建对象,注意:这里的时间戳是以毫秒为单位。

我们也可以利用Date去访问未来或过去的时间,进而对两个时间进行比较。

1.1.2时间的比较

public static void main(String[] args) {// 比较两个时间Date d1 = new Date();Date d2 = new Date(d1.getTime()+1000);System.out.println(d1.before(d2));System.out.println(d1.after(d2));System.out.println(d1.compareTo(d2));System.out.println(d1.equals(d2));// d1.getTime() - d2.getTime()// setTime:改变Date对象的时间戳d1.setTime(d1.getTime()+24*3600*1000);System.out.println(d1);}

1.1.3常见的日期格式化

因为单纯的创建Date类所展现出来的时间,并不是我们日常常见的时间格式,我们可以通过日期格式化的方法来改变日期格式,使得我们更易看懂。

例一:

public static void main(String[] args) {Date date = new Date();System.out.println(date);// 日期格式化->字符串SimpleDateFormat  df = new SimpleDateFormat();// [1]使用默认的模式和语言环境// 19-4-29 下午3:36String dateStr = df.format(date);System.out.println(dateStr);// [2]使用指定模式格式化// xxxx年xx月xx日  xx时xx分xx秒SimpleDateFormat  df2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");String dateStr2 = df2.format(date);System.out.println(dateStr2);// 修改模式// df2.applyPattern("yyyy-MM-dd");df2.applyPattern("yyyy/MM/dd");String dateStr3 = df2.format(date);System.out.println(dateStr3);}

例二:

public static void main(String[] args) {String str = "2019-04-29 15:48:00";SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 把子串->Datetry {Date date = df.parse(str);System.out.println(date);} catch (ParseException e) {e.printStackTrace();}}

1.2Calendar类

由于Date类上有许多方法已经过时且不实用了,JDK在后续更新中,新出了Calendar类满足时间属性以及方法上的使用,其实用性有了较大的提高。且Calendar类把时间上的字段存储在了一个容器上(初步理解为数组),我们可以在这个容器上进行set/get方法来达到我们的开发目的。

1.2.1Calendar实例

// 通过工厂设计模式构建一个对象Calendar cal = Calendar.getInstance();System.out.println(cal.toString());// 获取年System.out.println(cal.get(Calendar.YEAR));// 获取月,索引从0开始,0-表示1月 System.out.println(cal.get(Calendar.MONTH));System.out.println(cal.get(Calendar.DAY_OF_MONTH));// 时System.out.println(cal.get(Calendar.HOUR_OF_DAY));// 分System.out.println(cal.get(Calendar.MINUTE));// 秒System.out.println(cal.get(Calendar.SECOND));System.out.println(cal.get(Calendar.MILLISECOND));// 获取星期 一周的第一天是周日开始System.out.println(cal.get(Calendar.DAY_OF_WEEK));// 本月的第一天和本月的最后一天System.out.println(cal.getActualMinimum(Calendar.DAY_OF_MONTH));System.out.println(cal.getActualMaximum(Calendar.DAY_OF_MONTH));

2.Math类

在开发中主要用于产生随机数或是简单的运算。

以下是常见方法:

// 通过工厂设计模式构建一个对象Calendar cal = Calendar.getInstance();System.out.println(cal.toString());// 获取年System.out.println(cal.get(Calendar.YEAR));// 获取月,索引从0开始,0-表示1月 System.out.println(cal.get(Calendar.MONTH));System.out.println(cal.get(Calendar.DAY_OF_MONTH));// 时System.out.println(cal.get(Calendar.HOUR_OF_DAY));// 分System.out.println(cal.get(Calendar.MINUTE));// 秒System.out.println(cal.get(Calendar.SECOND));System.out.println(cal.get(Calendar.MILLISECOND));// 获取星期 一周的第一天是周日开始System.out.println(cal.get(Calendar.DAY_OF_WEEK));// 本月的第一天和本月的最后一天System.out.println(cal.getActualMinimum(Calendar.DAY_OF_MONTH));System.out.println(cal.getActualMaximum(Calendar.DAY_OF_MONTH));

3.枚举类

当我们在面对一些常见常量时,我们常常使用枚举类,例如:四季、性别、星期等等,这些在日常生活中不会发生改变的量我们常常利用枚举类去定义他们,在初步学习java时,我们常常从控制台输入一些数字来进行流程匹配,但这种方式是不利于代码阅读的,俗称魔鬼数字,这时,我们也可以利用枚举类来达到我们的需求,亦可增强代码简洁性与阅读性。

语法:

[修饰符] enum enumName{常量值1,常量值2,常量值3…常量值n[;]
}

枚举是一种由程序员自定义的数据类型,跟基本数据类型的特点一样,我们可以直接通过该类型声明变量,不过其变量值一定是你声明枚举类中的值且不能为其他值。注意:在枚举类中声明的值系统将默认为静态常量。

public enum Gender {男,女,保密;
}

public static void main(String[] args) {// 声明一个Gender枚举类型的变量gender,并取值为男Gender gender = Gender.男;}

3.1枚举与自负串之间的转化

在学习基本数据类型的包装类时,我们都知道基本数据类可以与字符串发生转化,而枚举作为一种自定义数据类型亦可完成这样的转化,且形式相似。

public static void main(String[] args) {// 声明一个Gender枚举类型的变量gender,并取值为男Gender gender = Gender.男;// 枚举值->字符串System.out.println(gender.toString());// 字符串串-> 枚举值String str = "保密";// 可能产生IllegalArgumentException 非法参数异常Gender gender2 = Enum.valueOf(Gender.class, str);System.out.println(gender2);}

3.2枚举与switch

这是枚举类使用最多的方式,在开发中将有很强的作用。

public enum Week {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY;
}

public static void main(String[] args) {// 需求:有一个变量表示星期几,输出对于的教学安排Week week = Week.TUESDAY;switch (week) {case MONDAY:case TUESDAY:case THURSDAY:case FRIDAY:case SATURDAY:{System.out.println("上课");break;}case WEDNESDAY:case SUNDAY:{System.out.println("练习");break;}}}

在枚举中亦可打印出每一个值

public static void main(String[] args) {// 枚举变量的其他方法Week week = Week.SUNDAY;System.out.println(week.name());System.out.println(week.ordinal());}

java枚举类是什么_Java学习--常用类(2)、Math类、枚举类相关推荐

  1. java 画笔跟swing组件_Java学习教程(基础)--Java版本历史(二)

    Java语言自JDK1.0版本以来经历了许多次更新,也在基本程序库中增加了大量的类别和包.从J2SE 1.4开始,Java语言的变动由 Java Community Process(JCP)管理,JC ...

  2. java保护型数据成员_Java基础知识笔记第四章:类和对象

    编程语言的几个发展阶段 面向机器语言 面向过程语言 面向对象语言:封装.继承.多态 类 类声明 classPerson{ ....... }class植物{ ....... } 类体 类使用类体来描述 ...

  3. JAVA捕捉输入格式异常_Java学习(四).异常处理

    异常处理 任何一个软件或程序都可能在运行的过程中出现故障,问题的关键是故障出现以后如何处理?谁来处理?怎样处理?处理后系统能否恢复正常的运行?本章在介绍Java处理这类问题基本方法的基础上,讨论包含异 ...

  4. java继承的终极奥义_java学习笔记12-继承

    继承就是子类继承父类的特征和行为 有时候单一划分某个类别并不能处理所有情况,某些类别下有明显不同的子类,这些子类虽然拥有类似的行为和属性,但是他们各自发生的这些行为的方式或者属性对某些结果的影响是不一 ...

  5. 百度apollo planning代码学习-Apollo\modules\planning\math\piecewise_jerk\PiecewiseJerkPathProblem类代码详解

    概述 PiecewiseJerkPathProblem类是apollo planning模块下modules\planning\math\piecewise_jerk\piecewise_jerk_p ...

  6. java流类图结构_java学习之IO流(学习之旅,一)

    个人在学习IO流的时候看到如下所示java 流类图结构的时候,我的感想是,这么多··处于蒙的状态. Java流类图结构 这么多,没有分类不好学,那我们就慢慢一口一口的吃,这样每天学习一点就好了,其实很 ...

  7. java工具类与集合类_JAVA学习---集合和工具类

    1.集合概述 总称,包含多个具体的类 1.1集合和数组的比较 数组 集合 大小固定 动态变化 效率较高.只存储原生数据类型 效率稍低.可以存储引用类型 只能存放单一数据类型 可以存储多种数据类型(除泛 ...

  8. java集合的存储特征_Java集合常用类特点整理

    集合的结构如下图所示: 集合的两个顶级接口分别为:Collection和Map Collection下有两个比较常用的接口分别是List(列表)和Set(集),其中List可以存储重复元素,元素是有序 ...

  9. java当前时间转化毫秒_Java学习笔记-时间相关类

    1. Date类: java.util.Date 时间原点:1970年1月1日00:00:00(中国+8小时) System.currentTimeMillis() 计算当前时间到原点经历的毫秒数 无 ...

最新文章

  1. 19.3.21 计算机网络基础知识
  2. mac远程桌面连接windows_web浏览器通过Myrtille连接Windows远程桌面
  3. 普通话测试系统_普通话
  4. Android布局延伸状态栏,Android沉浸式全屏讲解(状态栏、导航栏处理)
  5. python colorbar设置大小及位置_matplotlib colorbar更改轴大小
  6. 面试AI岗,为什么我在100人中拿到了唯一年薪70万的offer?
  7. 23.MySQL 函数
  8. st7789s显示芯片驱动代码
  9. 传图识别字体--求字体网
  10. Layui文件上传样式在ng-dialog不显示的问题处理
  11. 红米4x 刷android 8.0,【红米4X 安卓6.0.1救砖线刷包】免解锁MIUI V8.5.4.0.MAMCNED稳定版 精简线刷包...
  12. 这篇文章有毒《持续更新中。。。》
  13. 关于傅立叶变换的频率分辨率,采样时间,采样率关系
  14. 在日常生活中,简易合同的重要性 | 每天成就更大成功
  15. Wind安装程序出现x80070652错误问题
  16. SitePoint播客#136:政府发布的单个浏览器
  17. liferay调度器-定时任务
  18. 脑电数据处理分析——edf转mat及fft
  19. 表计算机灯泡答案,为了确定灯泡的使用寿命,在一批灯泡中随机抽职100个进行测试,所得结果如表3- 9所示。表 - 上学吧课后习题答案...
  20. 管理中计算机系统的应用论文,浅谈计算机数据库的管理与应用论文

热门文章

  1. python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
  2. 中用BBP公式计算_【真课堂】7年级信息技术:数据计算
  3. 使用pytorch的相关问题总结
  4. 30 分钟学会如何使用 Shiro
  5. Lucene教程--Analyzer分析器详解
  6. freemaker介绍及常见的用法解析
  7. 【JavaSE03】Java中分支语句-思维导图
  8. (数据结构与算法)插入排序和希尔排序
  9. Oracle 在Sqlplus 执行sql脚本文件。
  10. [转]解决 cannot restore segment prot after reloc: Permission denied