日期相关工具类、包装器类型(笔记)

本文介绍了Java中的日期处理工具,包括Calendar类用于获取和格式化日期,Date对象及其与SimpleDateFormat的配合使用,以及DateFormat的日期格式化。此外,还详细讲解了Java的包装器类型,如Integer和Character,包括它们的方法、转换功能以及自动装箱和拆箱的概念。
摘要由CSDN通过智能技术生成

目录

#日期相关工具类

1.Calendar 日历对象

2.Date 日期对象        SimpleDateFormat 格式化日期

3.DateFormat  格式化日期

#包装器类型

1.Java中的包装类型

2.Java中的包装类型-Integer类

3.Java中的包装类型-Character类

4.Java自动装箱与拆箱的使用方法


#日期相关工具类

1.Calendar 日历对象

        //获取日期的实例对象
        Calendar calendar = Calendar.getInstance();
        System.out.println("年:"+calendar.get(Calendar.YEAR));
        //月份是从0-11
        //由于前面有字符串,所以calendar.get(Calendar.MONTH)+1 需要用括号括起来
        //不加括号,会calendar.get(Calendar.MONTH)+1会被认为是字符串拼在一起,结果会由2变成11
        System.out.println("月:"+(calendar.get(Calendar.MONTH)+1));
        System.out.println("日:"+calendar.get(Calendar.DAY_OF_MONTH));
        //一天中的第几个小时
        System.out.println("时:"+calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:"+calendar.get(Calendar.MINUTE));
        System.out.println("秒:"+calendar.get(Calendar.SECOND));
        //星期天就是一周的第一天
        System.out.println("星期"+calendar.get(Calendar.DAY_OF_WEEK));
        //12小时
        System.out.println("时:"+calendar.get(Calendar.HOUR));


running:
年:2023
月:2
日:18
时:14
分:13
秒:31
星期7
时:2

例题:计算你的年龄

        //获取日期的实例对象
        Calendar calendar = Calendar.getInstance();
        //设置时间
        calendar.set(2001,1,1,0,0,0);
        //返回一个 Date表示此物体 Calendar的时间值
        Date time = calendar.getTime();
        //System.currentTimeMillis()获取系统当前时间,单位是微秒
        System.out.println((System.currentTimeMillis()-time.getTime())/1000/60/60/24/365);

2.Date 日期对象        SimpleDateFormat 格式化日期

        Date date = new Date();
        System.out.println("系统时间:"+date);

        //"yyyy-MM-dd HH:mm:ss"   大小写不是随便写的
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //Date-->String
        String s=dateFormat.format(date);
        System.out.println(s);



running:

系统时间:Sat Feb 18 14:15:49 CST 2023
2023-02-18 14:15:49
        //String日期描述--->Date
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str="2023-02-18 14:20:30";
        Date date = dateFormat.parse(str);
        System.out.println("Date--->"+date);


running:

Date--->Sat Feb 18 14:20:30 CST 2023

3.DateFormat  格式化日期

        DateFormat format = DateFormat.getDateInstance();
        Date date1 = new Date();
        System.out.println("系统时间--->"+date1);
        String format1 = format.format(date1);
        System.out.println(format1);


running:

系统时间--->Sat Feb 18 14:30:39 CST 2023
2023-2-18

#包装器类型

1.Java中的包装类型

1)使用原始数据类型声明的变量,如:

  • int num = 10;
  • 这里的num只是一个变量,而不是对象;

2)Java提供一系列包装类,以便将原始数据类型当作对象进行操作。

        好处:基本数据类型封装成对象,在对象中定义了属性和方法,可以方便的操作该数据(得

到整型最大值,最小值,进制转换等等)。

3)在java.lang包中,对于每个基本数据类型都有一个相应的包装类。

4)Java语言中的8个包装器类型如下所示:

  • 除了整型及字符型外,其他的包装器类型名字都是将基本数据类型首字母变大写即可;
  • 以Integer类为例,可以把int类型转换成Integer引用类型; 

2.Java中的包装类型-Integer类

    以Integer为例:

  • 包装类在程序开发中主要用于基本数据类型和字符串之间的转换 

示例:

public class demo {
    public static void main(String[] args){

        String count = "10";
        //字符串转成基本数据类型int
        int c =  Integer.parseInt(count);
        System.out.println(c+"--->"+getType(c));

    }

    //获取变量类型方法
    public static String getType(Object o) { 
        return o.getClass().toString(); 
    }

}


running:

10--->class java.lang.Integer


1)Integer的构造方法

赋值的两种方式:

  1. 构造方法赋值:Integer i = new Integer(11);
  2. 等号赋值:Integer i = 10;

2)Integer静态方法

        除了Character类以外,其它的包装类都有静态的parseXxx方法(Xxx指代具体的数据类型),用于将字符串转换成相对应的基本数据类型值。

示例:

public class demo {
    public static void main(String[] args) {

        String str = "555";
        //分别调用各个包装类的paseXxx方法对字符串进行转换,如果转换失败,将报异常
        int i = Integer.parseInt(str);
        System.out.println(i + "--->" + getType(i));

        double j = Double.parseDouble(str);
        System.out.println(j + "--->" + getType(j));

    }

    public static String getType(Object o) {
        return o.getClass().toString();
    }

}


running:

555--->class java.lang.Integer
555.0--->class java.lang.Double

3.Java中的包装类型-Character类

1)Character类中的常用方法:

注意:以上方法都是静态方法,可以直接通过类名调用,返回值均 为boolean类型,如果是返回true,否则返回false。

示例:

        char[] charArray = {'*', '7', 'b', ' ', 'A'};
        for (int i = 0; i < charArray.length; i++) {
            if (Character.isDigit(charArray[i])) {
                System.out.println(charArray[i] + "是一个数字。");
            }
            if (Character.isLetter(charArray[i])) {
                System.out.println(charArray[i] + "是一个字母。");
            }
            if (Character.isWhitespace(charArray[i])) {
                System.out.println(charArray[i] + "是一个空格。");
            }
            if (Character.isLowerCase(charArray[i])) {
                System.out.println(charArray[i] + "是小写形式。");
            }
            if (Character.isUpperCase(charArray[i])) {
                System.out.println(charArray[i] + "是大写形式。");
            }
        }


running:

7是一个数字。
b是一个字母。
b是小写形式。
 是一个空格。
A是一个字母。
A是大写形式。

4.Java自动装箱与拆箱的使用方法

  • 装箱:基本数据类型转换为包装器类型,称为装箱(boxing);

        例如,int型转换为Integer类型;

  • 拆箱:包装器类型转换为基本数据类型,称为拆箱(unboxing);

        例如Integer类型转换为int类型; 

一、

JDK1.5以后,装箱拆箱可以自动进行;例如:

二、

  • 在自动装箱拆箱过程中,Java使用到了常量池;
  • 常量池就是方法区的一部分,是内存的逻辑分区;
  • 如下代码所示,i1、i2使用到了自动装箱,io1和io2则没有使用:

  • i1 i2使用到常量池,io1、io2没有使用 

三、

  • i1 i2使用到常量池,io1、io2没有使用;
  • i1和i2的值都是10,所以指向常量池中相同的空间;因此i1==i2返回true;
  • io1和io2使用new创建赋值,所以分别指向堆中不同的空间,因此io1==io2返回false;

 四、

如下代码所示,i3、i4使用到了自动装箱,io3和io4则没有使用:

  • 原因:在自动装箱拆箱过程中,只有数值是byte范围内的时候,才使用到常量池,否则都是分配新的内存空间;
  • 1000早就超出了byte的范围,所以i3/i4是两个空间;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值