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