1.1 日期时间类

时间戳(timestamp):距离特定时间的时间间隔。

计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms)。

计算机中时间2019-04-29 14:14:00 是该时间距离历元经过的毫秒数,用long类型存储。

时间本质上是一个整形。

 格林尼治时间(GMT),是一个标准时间,用于全球时间的标准化,也称世界协调时(UT)。各个国家通过时区偏移来定义各国的标准时间。

 中国位于东八区

中国的标准时china standard time = UTC + 08:00

日本的标准时 = UTC + 09:00

1.2Date

类 Date 表示特定的瞬间,精确到毫秒。

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

  1. public static void main(String[] args) {
  2. // 创建一个Date对象,表示当前时间
  3. // 根据当前时区、当前语言环境等创建当前时间
  4. Date date1 = new Date();
  5. System.out.println(date1);
  6.  
  7. // 获取date1的时间戳
  8. long time1 = date1.getTime();
  9. System.out.println(time1);
  10.  
  11. // 通过时间戳创建Date对象
  12. long ts1 = 0;
  13. Date date2 = new Date(ts1);
  14. System.out.println(date2);
  15.  
  16. // 需求:请构建一个时间,表示未来一天的当前时间。
  17. long ts2 = 24*3600*1000+date1.getTime();
  18. Date date3 = new Date(ts2);
  19. System.out.println(date3.toString());
  20. }

1.2.1 时间比较

  1. public static void main(String[] args) {
  2.  
  3. // 比较两个时间
  4. Date d1 = new Date();
  5. Date d2 = new Date(d1.getTime()+1000);
  6.  
  7. System.out.println(d1.before(d2));
  8. System.out.println(d1.after(d2));
  9.  
  10. System.out.println(d1.compareTo(d2));
  11.  
  12. System.out.println(d1.equals(d2));
  13.  
  14. // d1.getTime() - d2.getTime()
  15. // setTime:改变Date对象的时间戳
  16. d1.setTime(d1.getTime()+24*3600*1000);
  17. System.out.println(d1);
  18. }

1.2.2日期时间的格式化

[1]把Date对象格式化成特定的字符串

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

[2]把特定的格式的字符串解析成Date对象

  1. public static void main(String[] args) {
  2.  
  3. String str = "2019-04-29 15:48:00";
  4.  
  5. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  6. // 把子串->Date
  7. try {
  8. Date date = df.parse(str);
  9. System.out.println(date);
  10. } catch (ParseException e) {
  11. e.printStackTrace();
  12. }
  13. }

1.3Calendar

Date本身很多方法在jdk1.1已经过时,jdk推荐使用Calendar取代Date获取单独的年、月、日、时、分、秒。

Calendar是日历类,本质上内部拥有一个属性 long time。 表示该日历所具体的时间戳。

同时Calendar内部通过对time的运算计算出很多日历字段,把这些日历字段存在一个容器中,并提供set/get方法用于设置或者访问这些字段。

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

  1. // 通过工厂设计模式构建一个对象
  2. Calendar cal = Calendar.getInstance();
  3. System.out.println(cal.toString());
  4.  
  5. // 获取年
  6. System.out.println(cal.get(Calendar.YEAR));
  7. // 获取月,索引从0开始,0-表示1月
  8. System.out.println(cal.get(Calendar.MONTH));
  9. System.out.println(cal.get(Calendar.DAY_OF_MONTH));
  10.  
  11. // 时
  12. System.out.println(cal.get(Calendar.HOUR_OF_DAY));
  13. // 分
  14. System.out.println(cal.get(Calendar.MINUTE));
  15. // 秒
  16. System.out.println(cal.get(Calendar.SECOND));
  17. System.out.println(cal.get(Calendar.MILLISECOND));
  18.  
  19. // 获取星期 一周的第一天是周日开始
  20. System.out.println(cal.get(Calendar.DAY_OF_WEEK));
  21.  
  22. // 本月的第一天和本月的最后一天
  23. System.out.println(cal.getActualMinimum(Calendar.DAY_OF_MONTH));
  24. System.out.println(cal.getActualMaximum(Calendar.DAY_OF_MONTH));

1.4Math

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

  1. public static void main(String[] args) {
  2.  
  3. // 常用属性
  4. System.out.println(Math.PI);
  5.  
  6. // 常用方法
  7. // 绝对值
  8. System.out.println(Math.abs(-10));
  9.  
  10. // ceil/floor
  11. // 返回比10.1大的最小整数=> 向上取整
  12. System.out.println(Math.ceil(10.1));
  13. // 返回比10.1小的最大整数=> 向下取整
  14. System.out.println(Math.floor(10.1));
  15.  
  16. // max/min
  17. System.out.println(Math.max(10, 20));
  18. System.out.println(Math.min(10, 20));
  19.  
  20. // pow(x,y) x的y次方
  21. System.out.println(Math.pow(2, 3));
  22.  
  23. // Math.random 随机数
  24. // 产生[m,n]随机整数 <=> (int)(Math.random()*(n-m+1)) + m
  25.  
  26. // 四舍五入
  27. System.out.println(Math.round(4.4));
  28.  
  29. // 把弧度转角度
  30. System.out.println(Math.toDegrees(Math.PI/2));
  31. // 把角度转化成弧度
  32. System.out.println(Math.toRadians(180));
  33.  
  34. // (C)sin(a)/cos(a)/tan(a)
  35. System.out.println(Math.sin(Math.toRadians(30)));
  36.  
  37. // 需求:求两点之间的距离(x1,y1)-(x2,y2)的距离。
  38. // Math.sqrt(Math.pow((y1-y2), 2)+Math.pow((x1-x2),2))
  39. }

1.5枚举

1.5.1 枚举简介

枚举是由一组固定的常量组成的类型,自定义数据类型。语法:

  1. [修饰符] enum enumName{
  2. 常量值1,
  3. 常量值2,
  4. 常量值3
  5.  
  6. 常量值n[;]
  7. }

枚举的常量值一定是可列举的有限值。常量值的类型都是public static final

案例:定义一个性别的枚举类型。

  1. public enum Gender {
  2. 男,
  3. 女,
  4. 保密;
  5. }

Gender 是一种自定义的数据类型,可以用于声明变量,且变量的取值必须是枚举值的其中一个。gender的值必须是男或者女或者保密。

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

java中所有的枚举类型都继承于Enum类。可以把枚举类型看出一个类。

  1. public class Student {
  2.  
  3. private String name;
  4. private int age;
  5. private Gender gender;
  6.  
  7. public String getName() {
  8. return name;
  9. }
  10.  
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14.  
  15. public int getAge() {
  16. return age;
  17. }
  18.  
  19. public void setAge(int age) {
  20. this.age = age;
  21. }
  22.  
  23. public Gender getGender() {
  24. return gender;
  25. }
  26.  
  27. public void setGender(Gender gender) {
  28. this.gender = gender;
  29. }
  30.  
  31. public Student(String name, int age, Gender gender) {
  32. super();
  33. this.name = name;
  34. this.age = age;
  35. this.gender = gender;
  36. }
  37.  
  38. public Student() {
  39. super();
  40. }
  41.  
  42. @Override
  43. public String toString() {
  44. return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]";
  45. }
  46.  
  47. }
  48.  
  49. // class Gender extends Enum{}
  50. enum Gender {
  51. 男, 女, 保密;
  52. }

1.5.2枚举和字符串转化

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

1.5.3枚举和switch

  1. public enum Week {
  2. MONDAY,
  3. TUESDAY,
  4. WEDNESDAY,
  5. THURSDAY,
  6. FRIDAY,
  7. SATURDAY,
  8. SUNDAY;
  9. }
  10.  
  11. public static void main(String[] args) {
  12.  
  13. // 需求:有一个变量表示星期几,输出对于的教学安排
  14. Week week = Week.TUESDAY;
  15. switch (week) {
  16. case MONDAY:
  17. case TUESDAY:
  18. case THURSDAY:
  19. case FRIDAY:
  20. case SATURDAY:{
  21. System.out.println("上课");
  22. break;
  23. }
  24. case WEDNESDAY:
  25. case SUNDAY:{
  26. System.out.println("练习");
  27. break;
  28. }
  29. }
  30. }

枚举的其他方法

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

总结

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

2. 使用enum关键字

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

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

 

时间戳(timestamp):距离特定时间的时间间隔。

计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms)。

计算机中时间2019-04-29 14:14:00 是该时间距离历元经过的毫秒数,用long类型存储。

时间本质上是一个整形。

 

格林尼治时间(GMT),是一个标准时间,用于全球时间的标准化,也称世界协调时(UT)。各个国家通过时区偏移来定义各国的标准时间。

中国位于东八区

中国的标准时china standard time = UTC + 08:00

日本的标准时 = UTC + 09:00

1.1 Date

类 Date 表示特定的瞬间,精确到毫秒。

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

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());

}

1.1.1 时间比较(B)

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.2 日期时间的格式化

[1]把Date对象格式化成特定的字符串

public static void main(String[] args) {

Date date = new Date();

System.out.println(date);

// 日期格式化->字符串

SimpleDateFormat  df = new SimpleDateFormat();

// [1]使用默认的模式和语言环境

// 19-4-29 下午3:36

String 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);

}

[2]把特定的格式的字符串解析成Date对象

public static void main(String[] args) {

String str = "2019-04-29 15:48:00";

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

// 把子串->Date

try {

Date date = df.parse(str);

System.out.println(date);

} catch (ParseException e) {

e.printStackTrace();

}

}

1.2 Calendar

Date本身很多方法在jdk1.1已经过时,jdk推荐使用Calendar取代Date获取单独的年、月、日、时、分、秒。

Calendar是日历类,本质上内部拥有一个属性 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));

1.3 Math

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

public static void main(String[] args) {

// 常用属性

System.out.println(Math.PI);

// 常用方法

// 绝对值

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

// ceil/floor

// 返回比10.1大的最小整数=> 向上取整

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

// 返回比10.1小的最大整数=> 向下取整

System.out.println(Math.floor(10.1));

// max/min

System.out.println(Math.max(10, 20));

System.out.println(Math.min(10, 20));

// pow(x,y) x的y次方

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

// Math.random 随机数

// 产生[m,n]随机整数 <=> (int)(Math.random()*(n-m+1)) + m

// 四舍五入

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

// 把弧度转角度

System.out.println(Math.toDegrees(Math.PI/2));

// 把角度转化成弧度

System.out.println(Math.toRadians(180));

// (C)sin(a)/cos(a)/tan(a)

System.out.println(Math.sin(Math.toRadians(30)));

// 需求:求两点之间的距离(x1,y1)-(x2,y2)的距离。

// Math.sqrt(Math.pow((y1-y2), 2)+Math.pow((x1-x2),2))

}

1.4 枚举

1.4.1 枚举简介

枚举是由一组固定的常量组成的类型,自定义数据类型。语法:

[修饰符] enum enumName{

常量值1,

常量值2,

常量值3…

常量值n[;]

}

枚举的常量值一定是可列举的有限值。常量值的类型都是public static final

案例:定义一个性别的枚举类型。

public enum Gender {

,

,

保密;

}

Gender 是一种自定义的数据类型,可以用于声明变量,且变量的取值必须是枚举值的其中一个。gender的值必须是男或者女或者保密。

public static void main(String[] args) {

// 声明一个Gender枚举类型的变量gender,并取值为男

Gender gender = Gender.;

}

java中所有的枚举类型都继承于Enum类。可以把枚举类型看出一个类。

public class Student {

private String name;

private int age;

private Gender gender;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public Gender getGender() {

return gender;

}

public void setGender(Gender gender) {

this.gender = gender;

}

public Student(String name, int age, Gender gender) {

super();

this.name = name;

this.age = age;

this.gender = gender;

}

public Student() {

super();

}

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + ", gender=" + gender + "]";

}

}

// class Gender extends Enum{}

enum Gender {

, , 保密;

}

1.4.2 枚举和字符串转化

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);

}

1.4.3 枚举和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. 强烈建议当你需要定义一组常量时,使用枚举类型

java 常用类2的更多相关文章

  1. Java基础 —— Java常用类

    Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...

  2. Java常用类之要点总结

    Java常用类之要点总结

  3. Java常用类:包装类,String,日期类,Math,File,枚举类

    Java常用类:包装类,String,日期类,Math,File,枚举类

  4. Java常用类学习笔记总结

    Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...

  5. Java 常用类总结(SE基础)

    本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...

  6. Java常用类的使用

    Java常用类 1. Optional 在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行 一 些防御式的检查,所以在代码中常常可见if( ...

  7. Java常用类之String类、Stringbuffer和Random类练习

    定义一个StringBuffer类对象, 1)使用append方法向对象中添加26个字母,并倒序遍历输入 2)删除前五个字符 package 第十一章常用类; /** * 定义一个StringBuff ...

  8. java常用类-上

    一,常用类之一包装类 java开发中习惯把八大基本数据类型封装到一个类中,并提供属性和方法,更方便的操作基本数据类型. 包装类的出现并不是用于取代基本数据类型,也取代不了. 包装类位于java.lan ...

  9. 第十四章 Java常用类

    14.常用类 14.1 字符串相关的类 1课时 14.2 JDK 8之前时间日期API 1课时 14.3 JDK8中新时间日期API 1课时 14.4 JDK8中的Optional类 1课时 14.5 ...

  10. Java 常用类String类、StringBuffer类

    常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...

随机推荐

  1. Java包装类、拆箱和装箱详解

    转载:https://www.cnblogs.com/ok932343846/p/6749488.html 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程, ...

  2. Hadoop worldcount

    以前的公司和现在的公司,都用到了hadoop和hdfs.一直没入门,今天照着官网写了一个hadoop worldcount demo 1. hadoop是一个框架,什么是框架,spring是一个框架. ...

  3. Delegate背后的秘密

    表面上看来使用delegate是一件很简单的事. 用delegate关键字定义,使用老套的new创建一个instance ,使用熟悉的方法调用写法调用,只不过不在是方法名,而是委托名. 但是在这背后C ...

  4. Visual studio 2013打开报异常"Exception has been thrown by the target of an invocation"

    最近遇到一个问题,打开VS2013和SQL Server2014都会出报错,错误信息如下: 以前都是好好的,重启了机子也不行,能打开两个VS,再打开第三个VS还是会报错,百度无果,还是在google上 ...

  5. HTML是什么与基础格式

    html 又称 超文本标记语言. 网页的本质其实就是html代码,通过浏览器,将html转换翻译成用户可以看得懂的展现丰富的页面. 所以制作网站的本质,其实就是编写html代码. HTML基础格式 & ...

  6. html打造动画【系列4】哆啦A梦

    我相信每个人的童年都有一个哆啦a梦,一个小小的肚皮里装满了不可思议的哆啦a梦,一个在你无助伤心的时候陪在你身边的哆啦a梦,一个陪你胡思乱想陪你吃铜锣烧的哆啦a梦~今天我们就来画一个我们心中的哆啦a梦吧 ...

  7. AE+C#实现:在SceneControl里打开和保存

    来自:http://www.cnblogs.com/zhuxy/archive/2012/03/30/2424672.html 之前编写这段代码,发现一直没有C#编写的,现在贴出来,希望对大家有用 此 ...

  8. Android Fragment重要函数

    Fragment的常用函数: 一.Fragment对象 1.void setArguments(Bundle args); 这个函数为Fragment提供构造参数(也就是数据),参数以Bundle类型 ...

  9. Array inversion case

    package basic.java; import java.util.Scanner; /* * 需求: * (1)键盘录入5个int类型的数据存储数组arr中 * (2)定义方法将arr数组中的 ...

  10. CPU硬件辅助虚拟化技术

    目前主要有Intel的VT-x和AMD的AMD-V这两种技术.其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest O ...