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

运行结果:

2021年12月15日

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+"日");

}

}

运行结果:

以上就是JavaSE系列基础包装类及日历类详解的详细内容,更多关于JavaSE 基础包装类 日历类的资料请关注其它相关文章!

以上是 JavaSE系列基础包装类及日历类详解 的全部内容, 来源链接: utcz.com/p/251562.html

回到顶部