欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

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

发布时间:2025/3/20 java 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java枚举类是什么_Java学习--常用类(2)、Math类、枚举类 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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类、枚举类的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。