日期:Date,SimpleDateFormat常见API以及包装类
一.Date类
package com.gch.d1_date;import java.util.Date;/**目标:学会使用Date类处理时间,获取时间的信息*/
public class DateDemo1 {public static void main(String[] args) {// 1.创建一个Date类的对象:代表系统此刻日期时间对象Date d = new Date();System.out.println(d); // Wed Mar 01 10:04:09 CST 2023// 2.获取时间毫秒值long time = d.getTime();System.out.println(time); // 1677636249346
// long time1 = System.currentTimeMillis();
// System.out.println(time1);System.out.println("-----------------------");// 请计算当前时间往后走1小时121秒之后的时间是多少// 1.得到当前时间Date d1 = new Date();System.out.println(d1); // Wed Mar 01 10:04:09 CST 2023// 2.当前时间往后走1小时121秒long time2 = System.currentTimeMillis();time2 += (60 * 60 + 121) * 1000;// 3.把时间毫秒值转换成对应的日期对象
// Date d2 = new Date(time2);
// System.out.println(d2);Date d3 = new Date();// 设置日期对象的时间为当前时间毫秒值对应的时间d3.setTime(time2);System.out.println(d3); // Wed Mar 01 11:06:10 CST 2023}
}
二.SimpleDateFormat类
package com.gch.d2_simpledateformat;import java.text.SimpleDateFormat;
import java.util.Date;/**目标:SimpleDateFormat简答日期格式化类的使用格式化时间解析时间*/
public class SimpleDateFormatDemo1 {public static void main(String[] args) {// 1.日期对象Date d = new Date();System.out.println(d); // Sat Feb 25 18:08:35 CST 2023// 2.格式化这个日期对象(指定最终格式化的形式) // EEE:代表星期几 a:代表是上午还是下午 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");// 3.开始格式化日期对象称为喜欢的字符串形式String rs = sdf.format(d);System.out.println(rs); // 2023年02月25日 18:08:35 星期六 下午System.out.println("-----------------------");// 4.格式化时间毫秒值// 需求:请问121秒后的时间是多少long time = System.currentTimeMillis() + 121 * 1000;String rs2 = sdf.format(time);System.out.println(rs2); // 2023年02月28日 14:34:35 星期二 下午}
}
package com.gch.d2_simpledateformat;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleDateFormatDemo2 {public static void main(String[] args) throws ParseException {// 目标:学会使用SimpleDateFormat解析字符串时间成为日期对象System.out.println("------解析字符串时间-------");// 案例:请计算出2021年08月06日11点11分11秒,往后走2天14小时49分06秒后的时间是多少// 1.把字符串时间拿到程序中来String dataStr = "2021年08月06日 11:11:11";// 2.把字符串时间解析成日期对象(本节的重点):形式必须与被解析时间的格式完全一样,否则运行时解析报错!SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:s");Date d = sdf.parse(dataStr);// 3.往后走2天 14小时 49分 06秒long time = d.getTime() + (2L * 24 * 60 * 60 + 14 * 60 * 60 + 49 * 60 + 6) * 1000;// 4.格式化这个时间毫秒值就是结果System.out.println(sdf.format(time)); // 2021年08月09日 02:00:17}
}
package com.gch.d2_simpledateformat;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleDateFormatTest3 {public static void main(String[] args) throws ParseException {// 1.开始和结束时间String startTime = "2021-11-11 00:00:00";String endTime = "2021-11-11 00:10:00";// 2.小贾 小皮String xiaoJia = "2021-11-11 00:03:47";String xiaoPi = "2021-11-11 00:10:11";// 3.解析他们的字符串时间为日期对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d1 = sdf.parse(startTime);Date d2 = sdf.parse(endTime);Date d3 = sdf.parse(xiaoJia);Date d4 = sdf.parse(xiaoPi);if(d3.after(d1) && d3.before(d2)){System.out.println("小贾秒杀成功,可以发货了!");}else{System.out.println("小贾秒杀失败!");}if(d4.after(d1) && d4.before(d2)){System.out.println("小皮秒杀成功,可以发货了!");}else{System.out.println("小皮秒杀失败!");}}
}
三.包装类
- 包装类就是8种基本数据类型对应的对象,就是把基本数据类型变成了一个对象。
- 包装类是引用数据类型,包装类的本质就是在堆内存中创建了一个对象,对象当中记录对应的数据值。而基本数据类型在变量中记录的是真实的数据值。
- 获取包装类对象,不需要调方法,直接赋值即可。
- 集合和泛型不支持基本数据类型,只支持引用数据类型。
- 包装类(位于java.lang包中)
- 在Java中,每一次new都是创建了一个新的对象
- Java是强类型语言:每种数据在Java中都有各自的数据类型,在计算的时候,如果不是同一种数据类型,是无法直接计算的。
package com.gch.d5_integer;/**目标明白包装类的概念,并使用*/
public class Test {public static void main(String[] args) {int a = 10;Integer a1 = 11; // 引用类型,认为a1是对象变量System.out.println(a);System.out.println(a1);Integer a2 = a; // 自动装箱Integer it = 100;int it1 = it; // 自动拆箱System.out.println(it1);// int age = null; 报错了// Integer容错率更高Integer age1 = null;Integer age2 = 0;System.out.println("----------------------");// 1.包装类可以把基本类型的数据转换成字符串形式(没啥用)Integer i3 = 23;String rs = i3.toString();System.out.println(rs + 1); // 231// 包装类也可以直接+字符串得到字符串类型String rs2 = i3 + "";System.out.println(rs2 + 1); // 231System.out.println("----------------");String number = "23";// 转换成整数
// int age = Integer.parseInt(number);int age = Integer.valueOf(number);System.out.println(age + 1); // 24String number1 = "99.9";// 转换成小数
// double score = Double.parseDouble(number);double score = Double.valueOf(number1);System.out.println(score + 0.1); // 100}
}
- Integer.valueOf(int i),如果i的值在-128到127之间,它会提前创建好Integer的对象,并且放到一个数组当中,用Integer.valueOf方法去获取对象的时候,它会判断你这个数据是不是在-128到127之间,如果说在,它不会创建新的对象,而是从数组当中获取已经创建好的对象给你返回,如果说不在-128到127之间,它才会new新的对象
底层原理:
- 因为在实际开发中,-128~127之间的数据,用的比较多
- 如果每次使用都是new对象,那么太浪费内存了,所以提前把这个范围之内的每一个数 据都创建好对象
- 如果要用到了不会创建新的,而是返回已经创建好的对象。
- == 号是比较两个对象的地址值是否相同
package com.gch.d5_integer;public class Test2 {public static void main(String[] args) {// 这两种方式获取对象的区别(掌握)// i的值都是127,不会创建新对象,而是获取已有对象Integer i6 = Integer.valueOf(127);Integer i7 = Integer.valueOf(127);System.out.println(i6 == i7); // trueInteger i8 = Integer.valueOf(128);Integer i9 = Integer.valueOf(128);System.out.println(i8 == i9); // false// 因为看到了new关键字,在Java中,每一次new都是创建了一个新的对象// 所以下面的两个对象都是new出来,地址值不一样Integer i10 = new Integer(127);Integer i11 = new Integer(127);System.out.println(i10 == i11); // falseInteger i12 = new Integer(128);Integer i13 = new Integer(128);System.out.println(i12 == i13); // false}
}
- 在JDK5的时候提出了一个机制:自动装箱和自动拆箱
- 自动装箱:把基本数据类型会自动地变成其对应的包装类
- 自动拆箱:把包装类自动地变成其对应的基本数据类型
在JDK5以后,int和Integer可以看作是同一个东西,因为在内部可以自动转化。
package com.gch.d5_integer;public class Test3 {public static void main(String[] args) {
// Integer i1 = 127;
// Integer i2 = 127;
// System.out.println(i1 == i2); // true// 在底层,此时还会去自动调用静态方法valueOf得到一个Integer对象,只不过这个动作不需要我们自己去操作了// 自动装箱的操作Integer i1= 10;Integer i2 = new Integer(10);// 自动拆箱的动作int i = i2;}
}
package com.gch.d5_integer;public class Test4 {public static void main(String[] args) {Integer i1 = 10;Integer i2 = 10;// 引用数据类型不能直接计算,要先拆箱相加后再装箱赋值给i3Integer i3 = i1 + i2;}
}
- public static String toBinaryString(int i) 得到二进制
- public static String toOctalString(int i) 得到八进制
- public static String toHexString(int i) 得到十六进制
- public static int parseInt(String s) 将字符串类型的整数转成int类型的整数
- 为什么返回值类型为String,因为八进制有可能是01101101
- int类型最多可以取到21亿,也就是最多只能有10位
package com.gch.d5_integer;public class Test5 {public static void main(String[] args) {// 1.把整数转成二进制,十六进制String str1 = Integer.toBinaryString(100);System.out.println(str1); // 1100100// 2.把整数转成八进制String str2 = Integer.toOctalString(100);System.out.println(str2); // 144// 3.把整数转成十六进制String str3 = Integer.toHexString(100);System.out.println(str3); // 64// 4.将字符串类型的整数转成int类型的整数// 因为Java是强类型语言:每种数据在Java中都有各自的数据类型// 在计算的时候,如果不是同一种数据类型,是无法直接计算的int i = Integer.parseInt("123");System.out.println(i); // 123System.out.println(i + 1); // 124boolean b = Boolean.valueOf("true");System.out.println(b); // true}
}
package com.gch.d5_integer;import java.util.Scanner;public class Test6 {public static void main(String[] args) {// 键盘录入Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");/* String str = sc.next();System.out.println(str);*/// 弊端:// 当我们在使用next,nextInt,nextDouble在接收数据的时候,遇到空格,回车,制表符的时候就停止了// 键盘录入的是123 123 那么此时只能接收空格前面的数据// 我想要的是接收一整行数据// 约定:// 以后我们如果想要键盘录入,不管什么类型,统一使用nextLine// 特点:遇到回车才停止String line = sc.nextLine();System.out.println(line);}
}
日期:Date,SimpleDateFormat常见API以及包装类相关推荐
- Java8 日期/时间(Date Time)API指南
Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间处理的一致性方法,因此日期/时间API也是除Java核心API以外另一项倍受欢迎的内容 ...
- JAVA的String、StringBuilder、StringBuffer、包装类、日期Date类、枚举类(Enumeration)
主要内容: String类 字符串构造器的用法 String中的常用方法 String类源代码 String字符串各种拼接方式的效率比较 包装类 日期Date Date方法 getTime 日期格式化 ...
- 基本类型包装 基本数据类型包装类 Data 日期类 SimpleDateFormat类
文章目录 基本类型包装 基本数据类型包装类 Data 日期类 SimpleDateFormat类 基本类型包装 需求,有一个字符串"91 27 46 38 50 ,最终输出结果是 27 38 ...
- 复习Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节
Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 Stri ...
- 常见API、正则表达式、Lanbda、算法
1.常见API - Date Date类代表当前所在系统的日期时间信息. Date的构造器 Date d = new Date(); 名称 说明 public Date() 创建一个Date对象,代表 ...
- Java基础|1-07-Object类与常见API(二)@API篇
写在前面: 此系列文是笔者在学习Java系列课程的过程中,参考相关课件.视频讲解.课程代码,并结合一些文档.思维导图及个人理解,对所学内容做的阶段性梳理与总结. 写于:2021年1月28日 内容:Ja ...
- java tostring格式化日期_java日期格式化SimpleDateFormat的使用详解
日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...
- java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串
日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...
- 学习String类和日期Date类,看这一篇就够了
写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的 ...
最新文章
- java 扫描tcp端口号_多线程TCP端口扫描 java实现
- HDU 2181 哈密顿绕行世界问题【DFS】
- Selenium3自动化测试——22.使用DDT运行同一测试用例
- ACCP学习旅程之-----使用C#开发数据库应用程序(第二章)
- C++ >>和<<读写文本文件
- linux下面firefox设置跳转的时候的页面颜色为黑色
- 一个简单的parser
- Linux 下的几个游戏模拟器
- Linux 进程优先级以及环境变量
- HP11.31安装11.2.0.3实施手册
- Linux环境下的jdk安装(大数据环境)
- 减少OpenCV读取高分辨率图像的时间
- python确定样本量(总体比例)
- OpenGL中的Alpha测试,深度测试,模板测试,裁减测试 .
- 虚幻引擎4初探(UE4)
- 中国人民银行计算机招聘笔试题和答案(笔试真题)
- 数据驱动运营,为门店开拓第二增长曲线。
- 有关直方图的常用操作
- Unity3D官方教程爬坑
- CSS_01_选择器