java 常用类2
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就是时间戳。
- 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.2.1 时间比较
- 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.2.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.3Calendar
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.4Math
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.5枚举
1.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;
- 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.5.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.5.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. 强烈建议当你需要定义一组常量时,使用枚举类型
时间戳(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的更多相关文章
- Java基础 —— Java常用类
Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...
- Java常用类之要点总结
Java常用类之要点总结
- Java常用类:包装类,String,日期类,Math,File,枚举类
Java常用类:包装类,String,日期类,Math,File,枚举类
- Java常用类学习笔记总结
Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...
- Java 常用类总结(SE基础)
本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...
- Java常用类的使用
Java常用类 1. Optional 在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行 一 些防御式的检查,所以在代码中常常可见if( ...
- Java常用类之String类、Stringbuffer和Random类练习
定义一个StringBuffer类对象, 1)使用append方法向对象中添加26个字母,并倒序遍历输入 2)删除前五个字符 package 第十一章常用类; /** * 定义一个StringBuff ...
- java常用类-上
一,常用类之一包装类 java开发中习惯把八大基本数据类型封装到一个类中,并提供属性和方法,更方便的操作基本数据类型. 包装类的出现并不是用于取代基本数据类型,也取代不了. 包装类位于java.lan ...
- 第十四章 Java常用类
14.常用类 14.1 字符串相关的类 1课时 14.2 JDK 8之前时间日期API 1课时 14.3 JDK8中新时间日期API 1课时 14.4 JDK8中的Optional类 1课时 14.5 ...
- Java 常用类String类、StringBuffer类
常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...
随机推荐
- Java包装类、拆箱和装箱详解
转载:https://www.cnblogs.com/ok932343846/p/6749488.html 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程, ...
- Hadoop worldcount
以前的公司和现在的公司,都用到了hadoop和hdfs.一直没入门,今天照着官网写了一个hadoop worldcount demo 1. hadoop是一个框架,什么是框架,spring是一个框架. ...
- Delegate背后的秘密
表面上看来使用delegate是一件很简单的事. 用delegate关键字定义,使用老套的new创建一个instance ,使用熟悉的方法调用写法调用,只不过不在是方法名,而是委托名. 但是在这背后C ...
- Visual studio 2013打开报异常"Exception has been thrown by the target of an invocation"
最近遇到一个问题,打开VS2013和SQL Server2014都会出报错,错误信息如下: 以前都是好好的,重启了机子也不行,能打开两个VS,再打开第三个VS还是会报错,百度无果,还是在google上 ...
- HTML是什么与基础格式
html 又称 超文本标记语言. 网页的本质其实就是html代码,通过浏览器,将html转换翻译成用户可以看得懂的展现丰富的页面. 所以制作网站的本质,其实就是编写html代码. HTML基础格式 & ...
- html打造动画【系列4】哆啦A梦
我相信每个人的童年都有一个哆啦a梦,一个小小的肚皮里装满了不可思议的哆啦a梦,一个在你无助伤心的时候陪在你身边的哆啦a梦,一个陪你胡思乱想陪你吃铜锣烧的哆啦a梦~今天我们就来画一个我们心中的哆啦a梦吧 ...
- AE+C#实现:在SceneControl里打开和保存
来自:http://www.cnblogs.com/zhuxy/archive/2012/03/30/2424672.html 之前编写这段代码,发现一直没有C#编写的,现在贴出来,希望对大家有用 此 ...
- Android Fragment重要函数
Fragment的常用函数: 一.Fragment对象 1.void setArguments(Bundle args); 这个函数为Fragment提供构造参数(也就是数据),参数以Bundle类型 ...
- Array inversion case
package basic.java; import java.util.Scanner; /* * 需求: * (1)键盘录入5个int类型的数据存储数组arr中 * (2)定义方法将arr数组中的 ...
- CPU硬件辅助虚拟化技术
目前主要有Intel的VT-x和AMD的AMD-V这两种技术.其核心思想都是通过引入新的指令和运行模式,使VMM和Guest OS分别运行在不同模式(ROOT模式和非ROOT模式)下,且Guest O ...