广州尚学堂部分笔记

常用类(二)

今天讲的是日期时间类

时间戳的意思是:距离特定时间的时间间隔,特定时间是有规定的:1970年1月1日 00:00:00,系统重装的时候也可以看见1970年1月1日 8:00:00:000

时间戳就是距离1970年1月1日 00点00分00秒000毫秒的时间间隔

比如今天计算机上显示的是2019年4月29日 14点14分00秒,那他的时间间隔是非常大的,时间间隔是用毫秒来表示的,用long类型来存储的

时间是一个整型。

小知识:格林尼治时间(GMT)为世界时间标准,因为格林尼治时间的正午经过英国那里的本初子午线,因为我们是中国,位于东八区,所以要加上8小时,这是地理问题。

1.Date(此类有很多过时的东西,但是没过时的依旧可以使用)

Date:特定的瞬间,精确到毫秒。

Date 类本质上拥有一个long fastTime属性的包装类,提供了很多属性和方法用于快速获取年月日、时分秒。而fastTime就是时间戳

创建Date对象的时候记得是util;

写日期的时候yyyy是年,MM是月份,dd是天数,HH是小时,mm是分钟,ss是秒。

Calendar

因为Date本身有很多方法在JDK1.1后已经过时了,所以推荐常使用Calendar取代Date获取单独的年月日时分秒。

他是一个日历类,本质上内部里有一个属性,叫:long time ,他表示的是该日历所具体的时间戳,同时Calendar内部通过对time 的运算计算出很多日历字段,把这些日历字段存在一个容器中,并提供set和get方法给人设置或者访问这些字段

案例:获取Calendar中的日历字符值

// 通过工厂设计模式构建一个对象

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

Math 类包含用于执行基本数学运算的方法。例如,随机数、平方、立方。

里面的PI 等于数学里的π

经常用Math是弄一些绝对值(函数为abs)

System.out.println("Math.abs(-10)");

向上取整(函数为ceil)/ 向下取整(函数为floor)

system.out.println(Math.ceil(10.1));

这个用的是向上取整的函数,结果是10.1变成了10.0,因为是取最小整数,所以得这样的结果

如果是用向下取整,取的是最大整数,把代码换成floor就可以了。

时间比大小

max(大)和min(小)

system.out.println(Math.max(10.20));

就谁大,想比小就换函数成min。

pow(x,y) x的y次方(函数为pow)

System.out.println(Math.pow(2, 3));

四舍五入(函数为round)

System.out.println(Math.round(4.4));

3.枚举(挺重要的)

枚举是由一组固定的常量,常量,常量组成的类型,自定义数据类型,因为是自定义类型,所以可以声明变量

平时是这样弄

【修饰符】 enum enumName{

      常量值1.

      常量值2,

  常量值3

  。。。

  常量值N ;(注释:分号加不加无所谓,建议加,多了没毛病)

}

枚举的常量值呢,一定要是可以列举的有限值,常量值类型都默认为public static final

比如你用定义了男和女的一个枚举类型

你想用gender来声明变量,那么变量的值必须是枚举值里的其中一个,比如你弄了男和女,那么你输入的时候只能输男和女

其实直接把枚举当成一个类 , 会更好理解一些,因为java中所有的枚举类型都继承与enum类

枚举转化成字符串

Gender gender = Gender.男;

system.out.println(gender.tostring( ));

如果字符串要转化成枚举值

Gender gender = Gender.男;

String str = “男”;

但是可能会产生非法参数异常,也就是IllegalArgumentException

gender gender2 = Enum.valueOf(Gender.class, string);

System.out.println(gender2);

4.

                枚举和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());

}

总结

1.只能够取特定值中的一个

2.使用enum关键字

3.所有的枚举类型隐性地继承自 java.lang.Enum。(枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final的。可以直接通过枚举类型名直接使用它们。)

4.强烈建议当你需要定义一组常量时,使用枚举类型

你可能感兴趣的:(广州尚学堂部分笔记)