JavaSE系列基础包装类及日历类详解
目录
- 1. 基本类型包装类
- 1.1 概述
- 1.2 Integer类的概述与使用
- 1.3 int和String的相互转换
- 1.4 案例-字符串中数据排序
- 1.5 自动装箱和拆箱
- 2. Date类
- 2.1 Date常用方法
- 3. SimpleDateFormat类
- 3.1 案例-日期工具类
- 4. Calendar类-日历
- 4.1 Calendar 的常用方法
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 基础包装类 日历类的资料请关注我们其它相关文章!