日期:Date,SimpleDateFormat常见API以及包装类

news2024/11/18 5:42:38

 一.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.格式化这个日期对象(指定最终格式化的形式)
        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); // 231

        System.out.println("----------------");
        String number = "23";
        // 转换成整数
//        int age = Integer.parseInt(number);
        int age = Integer.valueOf(number);
        System.out.println(age + 1); // 24

        String 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); // true

        Integer 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); // false

        Integer 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;
        // 引用数据类型不能直接计算,要先拆箱相加后再装箱赋值给i3
        Integer 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); // 123
        System.out.println(i + 1); // 124

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是pod类型

很久很久以前,C 语言统一了江湖。几乎所有的系统底层都是用 C 写的,当时定义的基本数据类型有 int、char、float 等整数类型、浮点类型、枚举、void、指针、数组、结构等等。然后只要碰到一串01010110010 之类的数据,编译器都可以正确的把它解…

做软件测试,如何才能实现月入20K?

听我的,测试想要月入20k。 首先你要去大厂,不在大厂起码也得在一线城市,北上广深。 二线城市的话成都、杭州最好。 不然的话想都不要想。 像我之前整理过成都的公司,除了字节跳动、蚂蚁金服、滴滴、美团、京东、平安、字节跳动…

超简单的计数排序!!

假设给定混乱数据为:3,0,1,3,6,5,4,2,1,9。 下面我们将通过使用计数排序的思想来完成对上面数据的排序。(先不谈负数) 计数排序 该排序的思路和它的名字一样…

Java——图像渲染

题目链接 leetcode在线oj题——图像渲染 题目描述 有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。 你也被给予三个整数 sr , sc 和 newColor 。你应该从像素 image[sr][sc] 开始对图像进行 上色填充 。 为了完成…

互联网医院系统软件开发|互联网医院管理系统开发的好处

互联网医院一直是现在的热门行业,很多的医院已经开发了互联网医院,并且已经在良好的运行中,而有一些医院和企业正在开发中,或者打算开发互联网医院系统,其实这些企业和医院还是很有远见的,因为他们知道并了…

Swift 第三方 播放器AliyunPlayer(阿里云播放器)(源码)

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络&#xff0…

卡尔曼滤波——一种基于滤波的时序状态估计方法

文章目录1. Kalman滤波及其应用2. Kalman原理公式推导:Step 1:模型建立Step 2:开始Kalman滤波Step 3:迭代滤波本文是对 How a Kalman filter works, in pictures一文学习笔记,主要是提炼核心知识,方便作者快…

已解决pip install wxPython模块安装失败

已解决(pip install wxPython安装失败)error: legacy-instal1-failure Encountered error while trying to install package.wxPython note: This is an issue with the package mentioned above,not pip. hint : See above for output from …

如何用AST还原某音的JSVMP

1. 什么是JSVMP vmp简单来说就是将一些高级语言的代码通过自己实现的编译器进行编译得到字节码,这样就可以更有效的保护原有代码,而jsvmp自然就是对JS代码的编译保护,具体的可以看看H5应用加固防破解-JS虚拟机保护方案。 如何区分是不是jsv…

OpenFeign 切换HttpClient遇到的问题

背景 OpenFeign支持三种Http请求方式,默认情况下通过jdk中的HttpURLConnection向下游服务发起http请求(详见下图,源码详见feign.Client.Default), 默认的Client 采用 HttpURLConnection, 这种是无法复用的…

为什么一定要做集成测试?

集成测试,我们都不陌生,几乎我们产品每天都在进行。但是我们真的有好好思考:为什么一定要做集成测试吗?只是为了简单的将“积木”搭起来就行,还是有什么其他的深意? 深意可能不一定会有,但是意…

qt5.15 快速安装 国内源

1 qt5.15 安装问题 最大的问题就是需要在线下载与安装。即使挂了科学上网,国外的服务器下载速度也还是超级慢。 在网上找了各种解决办法后,终于找到一个快速下载安装的办法。 2 安装器下载 阿里源、清华源都没有Windows的安装器了,在腾讯…

IPv4地址细讲

文章目录一、IPv4地址简介二、IPv4地址的表示方法点分十进制记法三、IP地址的分类四、特殊IPv4地址:全 “0” 和全 “1”五、常用的三类IP地址使用范围六、五类IP地址的范围一、IPv4地址简介 IPv4地址分5类,每一类地址都由固定长度的字段组成&#xff1…

软件项目管理简答题复习(1)

1.项目:创造唯一的产品,唯一的服务临时性的努力 2.项目特征:不可见性,复杂性,一致性,变更性,特殊性 3.项目和日常活动的区别? 项目具有特殊性,负责人是项目经理&#…

软件项目管理计算题复习(1)

软件项目管理计算题复习(1) 1.关键路径:决定项目最早完成的一系列的活动。网络图中最长的路,最少的时差,总是差为0,也是关键路径。 2.最短路径也是最短工期 3.总时差:最晚开始-最早开始最晚结…

激光共聚焦显微镜在材料生产领域中的应用

在材料生产领域中,如需要分析金属材料/部件粗糙度的时候,不管是使用原子力显微镜还是台阶仪,都没有办法同时兼顾分辨率、扫描区域以及扫描速度。而基于激光共聚焦显微测量技术的共聚焦激光扫描显微镜,配备了真彩相机并提供还原的3…

NVIDIA CUDA初级教程视频学习笔记1

周斌老师 课程链接: 目录第一课内容生态环境第一课 CPU体系架构的概述什么是CPU指令存储器架构CPU内部的并行性第一课 预修课程: Cuda c programming guide 参考内容 1,2,3查找一下。 内容 CPU体系架构概述 并行程序设计概述 CUDA开发环境…

二叉树——二叉搜索树的最近公共祖先

二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大&#…

design\project\学习 OAuth 读书笔记(一)

OAuth(一) 原文链接:OAuth 2.0 tutorial | OAuth flows 目录OAuth(一)应用场景分析问题1:代表用户授予有限访问权限OAuth 代表用户授权问题2:允许第三方应用程序有限的访问API(服务…

TPS74525PQWDRVRQ1典型应用TPS62992QRYTRQ1汽车用稳压器 规格参数

TPS74525PQWDRVRQ1线性稳压器 IC 2.5V 500MA 6WSON明佳达电子【概述】TPS745/TPS745-Q1可调节500mA LDO稳压器具有极低的静态电流,并可提供快速的线路和负载瞬态性能。TPS745/TPS745-Q1具有130mV的超低压差(500mA电流),这有助于提…