【javase系列基础包装类及日历类详细总结,看完不会来找我~】


)

1. 基本类型包装类

1.1 概述

它用于基本数据类型与字符串之间的转换
在这里插入图片描述
举例:

public class IntegerDemo {
    public static void main(String[] args) {
        //判断数据是否在int范围内
        System.out.println(Integer.MAX_VALUE);//最大范围
        System.out.println(Integer.MIN_VALUE);//最小范围
    }
}

1.2 Integer类的概述与使用

这里只介绍Integer,其他的可自行查看帮助文档。
在这里插入图片描述
那么我们重点看构造方法在这里插入图片描述
它的构造方法,建议以后用Integer的方法,用valueOf()来使用
过时的方法当然也可以用,不过它会提示已经过时,如下图所示:
但是如果是字符串类型的字母,就会运行错误,它识别的是字符串类型的数字

Integer i3=new Integer("asd");//这里就会运行错误

不建议使用上面的两种形式,建议使用这种格式:Integer i1=Integer.valueOf();

public class IntegerDemo {
    public static void main(String[] args) {
        Integer i1=Integer.valueOf(123);//数字类型
        System.out.println(i1);
        Integer i2=Integer.valueOf("123");//字符串类型
    }
}

1.3 int和String的相互转换

  • 简单的方式:“字符串”+数字,得出来的是拼接的字符串
int number=100;
String s1=""+number;
  • 方式二官方版
    在这里插入图片描述这里可以用官方文档给我们提示的进行,这里用的是valueOf进行转换
  • 数字转换为字符串String s1=String.valueOf(num);
  • 字符串转换为数字
    方式一:先将String转换为Integer再转化为int
    String—>Integer—>int
    方式二:Integer.parseInt();
public class IntegerDemo {
    public static void main(String[] args) {
       int num=100;
       String s1=String.valueOf(num);
       //int转换为字符串类型
        System.out.println(s1);
        System.out.println("----------");
        //字符串转换为int
        String s2="100";
       // 方式一:
        //String--->Integer--->int
        Integer i1=Integer.valueOf(s2);
        //通过帮助文档发现,
        // intValue()用来返回Integer
        // 作为int的值,正好符合要求
        int x=i1.intValue();//返回值用int接收
        System.out.println(x);
        //方式二:使用parseInt静态方法
        int y=Integer.parseInt(s2);
        System.out.println(y);
    }
}

1.4 案例-字符串中数据排序

需求:有一个字符串:“91 27 46 38 50”,请写程序最终输出的结果是:“27,38,46,50,91”.
思路
在这里插入图片描述
在这里插入图片描述

代码展示:

public class IntegerDemo {
    public static void main(String[] args) {
      //定义字符串
        String s="91 27 46 38 56";
        //将字符串中数据抽离出来,以空格作为分割点
        String[] s1 = s.split(" ");
        //定义一个int数组,用于存这些数据
        int []arr=new int[s1.length];//以s1的长度
        //转换为int类型
        for (int i = 0; i < s1.length; i++) {
            arr[i] = Integer.parseInt(s1[i]);
            //赋值
        }
        //进行排序
        Arrays.sort(arr);
        //字符串拼拼接
        StringBuilder sb=new StringBuilder();
        for(int i = 0; i < arr.length; i++){
            if(i==arr.length-1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(" ");
            }

        }
        String result = sb.toString();
        System.out.println("排序后的:"+ result);




    }
}

1.5 自动装箱和拆箱

  • 装箱: 把基本数据类型转换为对应包装类型
  • 拆箱: 把包装类型转换为基本数据类型
    先看装箱:通过定义我们可以看出,装箱把基本数据类型转化为对应包装类型,例如:
Inter i=Integer.valueOf(100);//这里先把100转化为Inter类型,赋值
Integer i1=100;//这里java5之后就在jdk内部
//已经潜移默化的为我们包装好了
//它等同于上步

拆箱:与装箱执行相反的步骤

Integer i1=100;
//拆箱:转换为int型,用intValue()这个方法
//然后进行基本类型的运算后再赋值给i1
//完成自动拆箱
i1=i1.intValue()+200;//最后赋值是自动装箱

自动拆箱:省去了转化为int类型的基本数据类型,直接进行运算

Integer i1=100;
i1+=200;//内部隐含了自动拆箱和自动装箱

注意
如果定义时,定义的Integer i=null;那么i进行运算时会运行错误,这里要注意,引用类型的最好要判断是否为null只要是对象,就必须判断是否为空

2. Date类

要注意,Date类导包时要清楚自己导的哪个包
在这里插入图片描述

在这里插入图片描述
构造方法:
Date 代表了指定时间,精确到毫秒
在这里插入图片描述
举例:注意!在这里导入的util包下的
在这里插入图片描述

public class DateDemo {
    public static void main(String[] args) {
        Date d=new Date();
        //按道理输出的应该是地址,结果输出了时间,因为重写了toString方法
        System.out.println(d);
        //有参构造
        long data=1000*60*60;//毫秒*1000->秒->*60->分钟->*60->小时
        Date d2=new Date(data);
        System.out.println(d2);
    }
}

运行结果:
Wed Dec 15 17:51:04 CST 2021
Thu Jan 01 09:00:00 CST 1970//其中09:00:00是时区

2.1 Date常用方法

  • public long getTime() 获取的是日期对象,从1970年1月1日00:00:00到现在的毫秒
  • public void setTime(long time) 设置时间,给的是毫秒值

getTime:
public class DateDemo {
    public static void main(String[] args) {
        Date d=new Date();
        //获取时间
        System.out.println(d.getTime()*1.0/1000/60/60/24/365+"年");
    }
}

运行结果:

51.99024939979706年//从1970到现在
setTime
public class DateDemo {
    public static void main(String[] args) {
        Date d=new Date();
       long date=1000*60*60;
       d.setTime(date);
        System.out.println(d);
    }
}
运行结果:
Thu Jan 01 09:00:00 CST 1970

3. SimpleDateFormat类

概述

  • SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化解析日期。重点学习日期格式化和解析化
  • 日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z’以及从‘a’到‘z’引号的字母被解释为表示日期或时间字符串的组件的模式字母
    常用模式字母对应关系
  • y…年
  • M…月
  • d…天
  • H…时
  • m…分
  • s…秒
    构造方法
    在这里插入图片描述
    SimpleDateFormat格式化与解析日期
  • 格式化(从Date到String)public final String format(Date date):将日期格式化成日期/时间字符串
  • 解析(从String到Date)public Date parse(String souce):从给定字符串的开始解析文本以生成日期
    举例
    格式化
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo {
    public static void main(String[] args) {
        //格式化
        Date d=new Date();
        //无参构造
        //先创建SimpleDateFormat类
        SimpleDateFormat sdf = new SimpleDateFormat();
        //通过对象调用方法
        String s = sdf.format(d);
        System.out.println(s);

    }
}

运行结果:

2021/12/15 下午7:11

为了看起来更加方便,可以自己设置模式:传递参数:

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
运行结果

在这里插入图片描述
解析

要注意的点:字符串模式的格式要和传参一样
2021-12-15 12:00:00要和yyyy-MM-dd HH:mm:ss"格式对应,例如都需要-,在代码下面会提示异常,要抛出异常,快捷键Alt+Enter

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {//抛出异常
        //解析
        Date d=new Date();
        String s="2021-12-15 12:00:00";
        //先创建SimpleDateFormat类
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//这里格式要和模式的一样
        //通过对象调用方法
        Date ss = sdf.parse(s);
        //抛出异常Alt+Enter
        System.out.println(ss);

    }
}

3.1 案例-日期工具类

在这里插入图片描述

在这里插入图片描述
工具类:

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

/*
工具类:构造方法私有,成员静态
*/
public class DateUtils {
    private DateUtils() {}
    //方法,把日期转化为指定格式的字符串
    //返回类型:String
    //参数:Date date,String format
    public static String dateTostring(Date date,String format){
        SimpleDateFormat sdf=new SimpleDateFormat(format);
        String s = sdf.format(date);
        return s;
    }
    //方法,把字符串转化为指定格式的日期
    //返回类型:Date
    //参数:String s,String format
    public static Date stringTodate(String s1,String format) throws ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat(format);
       Date p = sdf.parse(s1);
       return p;
    }
}

测试类:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {//抛出异常
        //创建日期对象
        Date d=new Date();
        //调用方法
        String s = DateUtils.dateTostring(d, "yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s);
        //也可以拿到部分
        String s1 = DateUtils.dateTostring(d, "yyyy年MM月dd日");
        System.out.println(s1);
        System.out.println("----以下是解析----");
        String s2="2021-12-15 00:00:00";
        Date date = DateUtils.stringTodate(s2, "yyyy-MM-dd HH:mm:ss");
        System.out.println(date);
    }
}

运行结果:

在这里插入图片描述

4. Calendar类-日历

概述

  • Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

  • Calendar提供了一个类方法getlnstance用于获取Calendar对象,其日历字段已使用当前日期和时间
    初始化: Calendar rightNow = Calendar.getInstance();

在这里插入图片描述
在这里插入图片描述

import java.util.Calendar;

public class CalendarDemo {
    public static void main(String[] args) {
        //获取对象
        Calendar c = Calendar.getInstance();//多态的形式
        int year = c.get(Calendar.YEAR);//因为字段是静态修饰的,所以通过对象调用字段
        //即Calendar.YEAR
        int month = c.get(Calendar.MONTH)+1;//一定要注意,月份是从0开始的,要+1
        int date = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+date+"日");
    }
}

注意:这里的
月份是从0开始的,所以在使用时要+1

运行结果:

20211215

4.1 Calendar 的常用方法

在这里插入图片描述
add()方法,由于在默认类中重写了方法,所以这里可以直接使用

import java.util.Calendar;

public class CalendarDemo {
    public static void main(String[] args) {
        //获取对象
        Calendar c = Calendar.getInstance();//多态的形式
        c.add(Calendar.YEAR,10);//在现在的基础上增加十年
        c.add(Calendar.DATE,-5);//在原来的基础上-5天
        int year = c.get(Calendar.YEAR);//因为字段是静态修饰的,所以通过对象调用字段
        //即Calendar.YEAR
        int month = c.get(Calendar.MONTH)+1;//一定要注意,月份是从0开始的,要+1
        int date = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+date+"日");
    }
}

运行结果:
在这里插入图片描述
set()方法

import java.util.Calendar;

public class CalendarDemo {
    public static void main(String[] args) {
        //获取对象
        Calendar c = Calendar.getInstance();//多态的形式
        c.set(2022,11,05);//这里11出来的结果会是12
        int year = c.get(Calendar.YEAR);//因为字段是静态修饰的,所以通过对象调用字段
        //即Calendar.YEAR
        int month = c.get(Calendar.MONTH)+1;//一定要注意,月份是从0开始的,要+1
        int date = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+date+"日");
    }
}

运行结果:
在这里插入图片描述

以上就是对知识点的总结,总结不容易,希望大家三联支持哦

评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i want to舞动乾坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值