JavaSE系列基礎(chǔ)包裝類及日歷類詳解
1. 基本類型包裝類
1.1 概述
它用于基本數(shù)據(jù)類型與字符串之間的轉(zhuǎn)換

舉例:
public class IntegerDemo {
public static void main(String[] args) {
//判斷數(shù)據(jù)是否在int范圍內(nèi)
System.out.println(Integer.MAX_VALUE);//最大范圍
System.out.println(Integer.MIN_VALUE);//最小范圍
}
}
1.2 Integer類的概述與使用
這里只介紹Integer,其他的可自行查看幫助文檔。

那么我們重點看構(gòu)造方法

它的構(gòu)造方法,建議以后用Integer的方法,用valueOf()來使用
過時的方法當(dāng)然也可以用,不過它會提示已經(jīng)過時,如下圖所示:

但是如果是字符串類型的字母,就會運行錯誤,它識別的是字符串類型的數(shù)字
Integer i3=new Integer("asd");//這里就會運行錯誤
不建議使用上面的兩種形式,建議使用這種格式:Integer i1=Integer.valueOf();
public class IntegerDemo {
public static void main(String[] args) {
Integer i1=Integer.valueOf(123);//數(shù)字類型
System.out.println(i1);
Integer i2=Integer.valueOf("123");//字符串類型
}
}
1.3 int和String的相互轉(zhuǎn)換
簡單的方式:“字符串”+數(shù)字,得出來的是拼接的字符串
int number=100; String s1=""+number;
方式二官方版:

這里可以用官方文檔給我們提示的進行,這里用的是valueOf進行轉(zhuǎn)換
數(shù)字轉(zhuǎn)換為字符串:String s1=String.valueOf(num);
字符串轉(zhuǎn)換為數(shù)字:
方式一:先將String轉(zhuǎn)換為Integer再轉(zhuǎn)化為int
String—>Integer—>int
方式二:Integer.parseInt();
public class IntegerDemo {
public static void main(String[] args) {
int num=100;
String s1=String.valueOf(num);
//int轉(zhuǎn)換為字符串類型
System.out.println(s1);
System.out.println("----------");
//字符串轉(zhuǎn)換為int
String s2="100";
// 方式一:
//String--->Integer--->int
Integer i1=Integer.valueOf(s2);
//通過幫助文檔發(fā)現(xiàn),
// intValue()用來返回Integer
// 作為int的值,正好符合要求
int x=i1.intValue();//返回值用int接收
System.out.println(x);
//方式二:使用parseInt靜態(tài)方法
int y=Integer.parseInt(s2);
System.out.println(y);
}
}
1.4 案例-字符串中數(shù)據(jù)排序
需求:有一個字符串:“91 27 46 38 50”,請寫程序最終輸出的結(jié)果是:“27,38,46,50,91”.
思路:


代碼展示:
public class IntegerDemo {
public static void main(String[] args) {
//定義字符串
String s="91 27 46 38 56";
//將字符串中數(shù)據(jù)抽離出來,以空格作為分割點
String[] s1 = s.split(" ");
//定義一個int數(shù)組,用于存這些數(shù)據(jù)
int []arr=new int[s1.length];//以s1的長度
//轉(zhuǎn)換為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 自動裝箱和拆箱
裝箱: 把基本數(shù)據(jù)類型轉(zhuǎn)換為對應(yīng)包裝類型拆箱: 把包裝類型轉(zhuǎn)換為基本數(shù)據(jù)類型
先看裝箱:通過定義我們可以看出,裝箱把基本數(shù)據(jù)類型轉(zhuǎn)化為對應(yīng)包裝類型,例如:
Inter i=Integer.valueOf(100);//這里先把100轉(zhuǎn)化為Inter類型,賦值 Integer i1=100;//這里java5之后就在jdk內(nèi)部 //已經(jīng)潛移默化的為我們包裝好了 //它等同于上步
拆箱:與裝箱執(zhí)行相反的步驟
Integer i1=100; //拆箱:轉(zhuǎn)換為int型,用intValue()這個方法 //然后進行基本類型的運算后再賦值給i1 //完成自動拆箱 i1=i1.intValue()+200;//最后賦值是自動裝箱
自動拆箱:省去了轉(zhuǎn)化為int類型的基本數(shù)據(jù)類型,直接進行運算
Integer i1=100; i1+=200;//內(nèi)部隱含了自動拆箱和自動裝箱
注意
如果定義時,定義的Integer i=null;那么i進行運算時會運行錯誤,這里要注意,引用類型的最好要判斷是否為null,只要是對象,就必須判斷是否為空
2. Date類
要注意,Date類導(dǎo)包時要清楚自己導(dǎo)的哪個包


構(gòu)造方法:
Date 代表了指定時間,精確到毫秒

舉例:注意!在這里導(dǎo)入的util包下的

public class DateDemo {
public static void main(String[] args) {
Date d=new Date();
//按道理輸出的應(yīng)該是地址,結(jié)果輸出了時間,因為重寫了toString方法
System.out.println(d);
//有參構(gòu)造
long data=1000*60*60;//毫秒*1000->秒->*60->分鐘->*60->小時
Date d2=new Date(data);
System.out.println(d2);
}
}
運行結(jié)果:
Wed Dec 15 17:51:04 CST 2021
Thu Jan 01 09:00:00 CST 1970//其中09:00:00是時區(qū)
2.1 Date常用方法
public long getTime() 獲取的是日期對象,從1970年1月1日00:00:00到現(xiàn)在的毫秒
public void setTime(long time) 設(shè)置時間,給的是毫秒值
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+"年");
}
}
運行結(jié)果:
51.99024939979706年//從1970到現(xiàn)在
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);
}
}
運行結(jié)果:
Thu Jan 01 09:00:00 CST 1970
3. SimpleDateFormat類
概述
SimpleDateFormat是一個具體的類,用于以區(qū)域設(shè)置敏感的方式格式化和解析日期。重點學(xué)習(xí)日期格式化和解析化
日期和時間格式由日期和時間模式字符串指定,在日期和時間模式字符串中,從‘A'到‘Z'以及從‘a(chǎn)'到‘z'引號的字母被解釋為表示日期或時間字符串的組件的模式字母
常用模式字母對應(yīng)關(guān)系
- y…年
- M…月
- d…天
- H…時
- m…分
- s…秒
構(gòu)造方法

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();
//無參構(gòu)造
//先創(chuàng)建SimpleDateFormat類
SimpleDateFormat sdf = new SimpleDateFormat();
//通過對象調(diào)用方法
String s = sdf.format(d);
System.out.println(s);
}
}
運行結(jié)果:
2021/12/15 下午7:11
為了看起來更加方便,可以自己設(shè)置模式:傳遞參數(shù):
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
運行結(jié)果

解析
要注意的點:字符串模式的格式要和傳參一樣
2021-12-15 12:00:00要和yyyy-MM-dd HH:mm:ss"格式對應(yīng),例如都需要-,在代碼下面會提示異常,要拋出異常,快捷鍵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";
//先創(chuàng)建SimpleDateFormat類
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//這里格式要和模式的一樣
//通過對象調(diào)用方法
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;
/*
工具類:構(gòu)造方法私有,成員靜態(tài)
*/
public class DateUtils {
private DateUtils() {}
//方法,把日期轉(zhuǎn)化為指定格式的字符串
//返回類型:String
//參數(shù):Date date,String format
public static String dateTostring(Date date,String format){
SimpleDateFormat sdf=new SimpleDateFormat(format);
String s = sdf.format(date);
return s;
}
//方法,把字符串轉(zhuǎn)化為指定格式的日期
//返回類型:Date
//參數(shù):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 {//拋出異常
//創(chuàng)建日期對象
Date d=new Date();
//調(diào)用方法
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);
}
}
運行結(jié)果:

4. Calendar類-日歷
概述
Calendar為某一時刻和一組日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段提供了一些方法
Calendar提供了一個類方法getlnstance用于獲取Calendar對象,其日歷字段已使用當(dāng)前日期和時間
初始化: Calendar rightNow = Calendar.getInstance();


import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//獲取對象
Calendar c = Calendar.getInstance();//多態(tài)的形式
int year = c.get(Calendar.YEAR);//因為字段是靜態(tài)修飾的,所以通過對象調(diào)用字段
//即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
運行結(jié)果:
2021年12月15日
4.1 Calendar 的常用方法

add()方法,由于在默認類中重寫了方法,所以這里可以直接使用
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//獲取對象
Calendar c = Calendar.getInstance();//多態(tài)的形式
c.add(Calendar.YEAR,10);//在現(xiàn)在的基礎(chǔ)上增加十年
c.add(Calendar.DATE,-5);//在原來的基礎(chǔ)上-5天
int year = c.get(Calendar.YEAR);//因為字段是靜態(tài)修飾的,所以通過對象調(diào)用字段
//即Calendar.YEAR
int month = c.get(Calendar.MONTH)+1;//一定要注意,月份是從0開始的,要+1
int date = c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");
}
}
運行結(jié)果:

set()方法
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
//獲取對象
Calendar c = Calendar.getInstance();//多態(tài)的形式
c.set(2022,11,05);//這里11出來的結(jié)果會是12
int year = c.get(Calendar.YEAR);//因為字段是靜態(tài)修飾的,所以通過對象調(diào)用字段
//即Calendar.YEAR
int month = c.get(Calendar.MONTH)+1;//一定要注意,月份是從0開始的,要+1
int date = c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+date+"日");
}
}
運行結(jié)果:

以上就是JavaSE系列基礎(chǔ)包裝類及日歷類詳解的詳細內(nèi)容,更多關(guān)于JavaSE 基礎(chǔ)包裝類 日歷類的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
spring通過構(gòu)造函數(shù)注入實現(xiàn)方法分析
這篇文章主要介紹了spring通過構(gòu)造函數(shù)注入實現(xiàn)方法,結(jié)合實例形式分析了spring通過構(gòu)造函數(shù)注入的原理、實現(xiàn)步驟及相關(guān)操作注意事項,需要的朋友可以參考下2019-10-10
MyEclipse設(shè)置Console輸出到文件的實現(xiàn)方法
下面小編就為大家?guī)硪黄狹yEclipse設(shè)置Console輸出到文件的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
Mybatis-Plus實現(xiàn)自動生成代碼的操作步驟
AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個模塊的代碼,極大的提升了開發(fā)效率,本文將給大家介紹Mybatis-Plus實現(xiàn)自動生成代碼的操作步驟2023-10-10
SpringCloud zuul 網(wǎng)關(guān)如何解決跨域問題
這篇文章主要介紹了SpringCloud zuul網(wǎng)關(guān)解決跨域問題的具體實現(xiàn)方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

