常用类(Date,Calendar,Math,枚举)
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,枚举)的更多相关文章
- 常用工具类(System,Runtime,Date,Calendar,Math)
一.System: 一个java.lang包中的静态工具类. 三大字段: static PrintStream err “标准”错误输出流. static InputStream in “标准”输入流 ...
- 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类
Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...
- Java常用类Date、Calendar、SimpleDateFormat详解
Date类 java.util 包提供了 Date 类来封装当前的日期和时间,Date 类提供两个构造函数来实例化 Date 对象 第一个构造函数使用当前日期和时间来初始化对象 Date( ) 第 ...
- Java基础——常用类(Date、File)以及包装类
本文要点: 基本数据类型的包装类 字符串相关类: 不可变字符序列:String 可变字符序列:StringBuffer.StringBuilder 时间处理相关类: Date DateFormat.S ...
- 【Java常用类】Calendar
Calendar日历类 实例化 方法一 创建其子类**(GregorianCalendar)**的对象 方法二 调用其静态方法getInstance() Calendar instance = Cal ...
- Java常用类Date相关知识
Date:类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串. Dat ...
- 黑马程序员——JAVA基础之System,Runtime,Date,Calendar,Math
------- android培训.java培训.期待与您交流! ---------- System: 类中的方法和属性都是静态的. out: 标准输出,默认是控制台. in:标准输入,默认是键盘 ...
- java常用类 比较器/system/math/big
Java 比较器 自然排序:java.lang.Comparable 定制排序:java.util.Comparator 自然排序:java.lang.Comparable Comparable接口 ...
- Java常用类之【Math类、Random类、System类、Runtime类】
一.Math类 Math类 [绝对值]Math.abs();//返回对应类型的绝对值 [最大值和最小值]Math.max(int a, int b) ,Math.min(int a,int b);(其 ...
- java常用类————Date类
Date类在Java.util包中. 一.功能介绍:创建Date对象,获取时间,格式化输出的时间. 二.对象创建:1.使用Date类无参数的构造方法创建的对象可以获取本地时间.例如: Date now ...
随机推荐
- spring cloud config客户端
上篇介绍了spring cloud config服务器,本篇介绍客户端.客户端主要是从config服务器获取配置信息. 代码示例 首先创建一个Maven项目,在pom.xml文件中添加依赖: < ...
- Spark练习代码
1.scalaWordCount package com._51doit.spark.day1 import org.apache.spark.rdd.RDDimport org.apache.spa ...
- Docker 安装redis(四)
Docker 安装redis 1.搜索docker镜像(可以看到搜索的结果,这个结果是按照一定的星级评价规则排序的) docker search redis 2.拉取docker的mysql镜像(如果 ...
- Spring全家桶–SpringBoot Rest API
Spring Boot通过提供开箱即用的默认依赖或者转换来补充Spring REST支持.在Spring Boot中编写RESTful服务与SpringMVC没有什么不同.总而言之,基于Spring ...
- java反射与动态代理的理解
一.什么是反射机制? 反射的官方定义是这样的:在运行状态中,对于任意的一个类,都能够知道这个类的所有属性和方法,对任意一个对象都能够通过反射机制调用一个类的任意方法,这种动态获取类信息及动态调用类对象 ...
- npm 走 privoxy 代理经常出现 shasum check failed 的解决办法
今天在下载一个比较大的项目,经常 shasum check failed ,太烦了,于是想切淘宝源,分别尝试 nrm 切换和传递 --registry ,结果都出现 Unexpected end of ...
- 【代码笔记】Web-HTML-标题
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- gulp使用 笔记
全局安装gulp,也需要本地安装gulp插件.全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能 //导入工具包 require('node_modules里对应模 ...
- [iOS] WSHorizontalPickerView 图片水平滚动封装
之前这篇文章传送门本来是记录自己练手的demo的,后来很多人来问我要代码.今天就抽时间封装了一下,没有考虑太多情况,等我有空再去仔细考虑吧. 代码在:Github 用法很简单,创建对象,设置数据源,记 ...
- (后端)NoSuchMethodError
这个错误是说编译时有这个方法,但运行时没有了 请使用:mvn clean install