1.日期时间类

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

如:计算机时间2019-04-29 14:14:00是该时间距离历元经过的毫秒数

由于数值过大,用long类型存储,所以时间本质上是一个整型。

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

中国位于东八区

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

2.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对象
longts1 = 0;
Date date2 = new Date(ts1);
System.out.println(date2); // 需求:请构建一个时间,表示未来一天的当前时间。
longts2 = 24*3600*1000+date1.getTime();
Date date3 = new Date(ts2);
System.out.println(date3.toString());
}

1).时间比较

 public static void main(String[] args) {

         // 比较两个时间
Date d1 = newDate();
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);
}

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秒
SimpleDateFormatdf2 = newSimpleDateFormat("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";

         SimpleDateFormatdf = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 把子串->Date
try {
Date date = df.parse(str);
System.out.println(date);
} catch (ParseExceptione) {
e.printStackTrace();
}
}

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

把日历设置成本月一号

     Calendar nowcal=Calendar.getInstance();
nowcal.set(Calendar.DAY_OF_MONTH,1);

4.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))
}

5.枚举

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;
privateintage;
private Gender gender; public String getName() {
return name;
} publicvoidsetName(String name) {
this.name = name;
} publicintgetAge() {
retur nage;
} public void setAge(intage) {
this.age = age;
} public Gender getGender() {
return gender;
} public void setGender(Gender gender) {
this.gender = gender;
} public Student(String name, intage, 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 {
男, 女, 保密;
}

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

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

4)枚举的其他方法

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】强烈建议当你需要定义一组常量时,使用枚举类型(为了避免出现魔鬼数字)

思考:能不能根据序号得到对于的枚举值?

枚举类.class.getEnumConstants()[枚举索引]

常用类(Date,Calendar,Math,枚举)的更多相关文章

  1. 常用工具类(System,Runtime,Date,Calendar,Math)

    一.System: 一个java.lang包中的静态工具类. 三大字段: static PrintStream err “标准”错误输出流. static InputStream in “标准”输入流 ...

  2. 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类

    Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...

  3. Java常用类Date、Calendar、SimpleDateFormat详解

    Date类 java.util 包提供了 Date 类来封装当前的日期和时间,Date 类提供两个构造函数来实例化 Date 对象 第一个构造函数使用当前日期和时间来初始化对象   Date( ) 第 ...

  4. Java基础——常用类(Date、File)以及包装类

    本文要点: 基本数据类型的包装类 字符串相关类: 不可变字符序列:String 可变字符序列:StringBuffer.StringBuilder 时间处理相关类: Date DateFormat.S ...

  5. 【Java常用类】Calendar

    Calendar日历类 实例化 方法一 创建其子类**(GregorianCalendar)**的对象 方法二 调用其静态方法getInstance() Calendar instance = Cal ...

  6. Java常用类Date相关知识

    Date:类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串. Dat ...

  7. 黑马程序员——JAVA基础之System,Runtime,Date,Calendar,Math

    ------- android培训.java培训.期待与您交流! ---------- System:  类中的方法和属性都是静态的. out:  标准输出,默认是控制台. in:标准输入,默认是键盘 ...

  8. java常用类 比较器/system/math/big

    Java 比较器 自然排序:java.lang.Comparable 定制排序:java.util.Comparator 自然排序:java.lang.Comparable  Comparable接口 ...

  9. Java常用类之【Math类、Random类、System类、Runtime类】

    一.Math类 Math类 [绝对值]Math.abs();//返回对应类型的绝对值 [最大值和最小值]Math.max(int a, int b) ,Math.min(int a,int b);(其 ...

  10. java常用类————Date类

    Date类在Java.util包中. 一.功能介绍:创建Date对象,获取时间,格式化输出的时间. 二.对象创建:1.使用Date类无参数的构造方法创建的对象可以获取本地时间.例如: Date now ...

随机推荐

  1. typeof() 和 GetType()区是什么

    1.typeof(x)中的x,必须是具体的类名.类型名称等,不可以是变量名称. 2.GetType()方法继承自Object,所以C#中任何对象都具有GetType()方法,它的作用和typeof() ...

  2. Eclipse SVN 冲突的 介绍 及 四种解决方式

    https://blog.csdn.net/diyu122222/article/details/79879376

  3. html页面背景设定相关

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 本地navicate for mysql怎么修改密码?

    1.以前在本地设置sql库密码,就是在本地新建数据库的时候就输入,怎么也链接不上,原来是新建数据库的时候不能输入密码,需要在内部修改. 2. 打开mysql user表 3. 打开mysql user ...

  5. Python 多线程、多进程 (三)之 线程进程对比、多进程

    Python 多线程.多进程 (一)之 源码执行流程.GIL Python 多线程.多进程 (二)之 多线程.同步.通信 Python 多线程.多进程 (三)之 线程进程对比.多线程 一.多线程与多进 ...

  6. Installing Language Tool in TexStudio

    This is a recent and more detailed solution for Windows users. Make sure the last version of TeXstud ...

  7. 《Inside C#》笔记(九) 表达式和运算符

    赋值和比较操作是一门语言最基本的功能. 一 基本概念 a)基本的运算符有加.减.乘.除.取余.赋值. 运算结果需要保存在内存的某个区域,有时直接保存在操作数本身,不管怎样,如果没有保存运算结果,编译器 ...

  8. JavaScript按日期排序之灵活排序

    上代码: var dataContent = [ { ID: "1", hobbit: "去音乐", sport: "在篮球", movie ...

  9. Python中For循环

    1. for i in range(10): print(i) 输出结果 F:\py\pyProject\venv\Scripts\python.exe F:/py/pyProject/venv/wh ...

  10. Java概述和项目演示

    Java概述和项目演示 1. 软件开发学习方法 多敲 多思考 解决问题 技术文档阅读(中文,英文) 项目文档 多阅读源码 2. 计算机 简称电脑,执行一系列指令的电子设备 3. 硬件组成 输入设备:键 ...