一.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}
}
  1. Integer.valueOf(int i),如果i的值在-128到127之间,它会提前创建好Integer的对象,并且放到一个数组当中,用Integer.valueOf方法去获取对象的时候,它会判断你这个数据是不是在-128到127之间,如果说在,它不会创建新的对象,而是从数组当中获取已经创建好的对象给你返回,如果说不在-128到127之间,它才会new新的对象

底层原理:

  1. 因为在实际开发中,-128~127之间的数据,用的比较多
  2. 如果每次使用都是new对象,那么太浪费内存了,所以提前把这个范围之内的每一个数       据都创建好对象
  3. 如果要用到了不会创建新的,而是返回已经创建好的对象。
  4. == 号是比较两个对象的地址值是否相同
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}
}
  1. 在JDK5的时候提出了一个机制:自动装箱和自动拆箱
  2. 自动装箱:把基本数据类型会自动地变成其对应的包装类
  3. 自动拆箱:把包装类自动地变成其对应的基本数据类型
  4. 在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;}
}
  1. public static String toBinaryString(int i)  得到二进制
  2. public static String toOctalString(int i)    得到八进制
  3. public static String toHexString(int i)      得到十六进制
  4. public static int parseInt(String s)  将字符串类型的整数转成int类型的整数
  5. 为什么返回值类型为String,因为八进制有可能是01101101
  6. 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以及包装类相关推荐

  1. Java8 日期/时间(Date Time)API指南

    Java 8日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间处理的一致性方法,因此日期/时间API也是除Java核心API以外另一项倍受欢迎的内容 ...

  2. JAVA的String、StringBuilder、StringBuffer、包装类、日期Date类、枚举类(Enumeration)

    主要内容: String类 字符串构造器的用法 String中的常用方法 String类源代码 String字符串各种拼接方式的效率比较 包装类 日期Date Date方法 getTime 日期格式化 ...

  3. 基本类型包装 基本数据类型包装类 Data 日期类 SimpleDateFormat类

    文章目录 基本类型包装 基本数据类型包装类 Data 日期类 SimpleDateFormat类 基本类型包装 需求,有一个字符串"91 27 46 38 50 ,最终输出结果是 27 38 ...

  4. 复习Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节

    Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 Stri ...

  5. 常见API、正则表达式、Lanbda、算法

    1.常见API - Date Date类代表当前所在系统的日期时间信息. Date的构造器 Date d = new Date(); 名称 说明 public Date() 创建一个Date对象,代表 ...

  6. Java基础|1-07-Object类与常见API(二)@API篇

    写在前面: 此系列文是笔者在学习Java系列课程的过程中,参考相关课件.视频讲解.课程代码,并结合一些文档.思维导图及个人理解,对所学内容做的阶段性梳理与总结. 写于:2021年1月28日 内容:Ja ...

  7. java tostring格式化日期_java日期格式化SimpleDateFormat的使用详解

    日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...

  8. java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串

    日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...

  9. 学习String类和日期Date类,看这一篇就够了

    写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的 ...

最新文章

  1. java 扫描tcp端口号_多线程TCP端口扫描 java实现
  2. HDU 2181 哈密顿绕行世界问题【DFS】
  3. Selenium3自动化测试——22.使用DDT运行同一测试用例
  4. ACCP学习旅程之-----使用C#开发数据库应用程序(第二章)
  5. C++ >>和<<读写文本文件
  6. linux下面firefox设置跳转的时候的页面颜色为黑色
  7. 一个简单的parser
  8. Linux 下的几个游戏模拟器
  9. Linux 进程优先级以及环境变量
  10. HP11.31安装11.2.0.3实施手册
  11. Linux环境下的jdk安装(大数据环境)
  12. 减少OpenCV读取高分辨率图像的时间
  13. python确定样本量(总体比例)
  14. OpenGL中的Alpha测试,深度测试,模板测试,裁减测试 .
  15. 虚幻引擎4初探(UE4)
  16. 中国人民银行计算机招聘笔试题和答案(笔试真题)
  17. 数据驱动运营,为门店开拓第二增长曲线。
  18. 有关直方图的常用操作
  19. Unity3D官方教程爬坑
  20. CSS_01_选择器

热门文章

  1. 前端优化一些知识,值得收藏
  2. 你管这叫操作系统源码(十四)
  3. 关于两种单菌种发酵的豆瓣酱代谢组学方面差异研究
  4. C语言判断给定整数序列是否构成等差数列
  5. Matplotlib绘制函数的等高线与三维图像
  6. 利用c语言设置密码错误循环,c语言运算符优先级与while循环案例
  7. 【记录】年底了,上班有感
  8. Linux(1)常用命令
  9. innovus停止当前命令_Innovus教程 - Flow系列 - 摆放宏单元(理论+实践+命令)
  10. 山东大学大数据管理与分析知识点总结