JavaSE系列基礎(chǔ)包裝類(lèi)及日歷類(lèi)詳解
1. 基本類(lèi)型包裝類(lèi)
1.1 概述
它用于基本數(shù)據(jù)類(lèi)型與字符串之間的轉(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類(lèi)的概述與使用
這里只介紹Integer,其他的可自行查看幫助文檔。
那么我們重點(diǎn)看構(gòu)造方法
它的構(gòu)造方法,建議以后用Integer的方法,用valueOf()
來(lái)使用
過(guò)時(shí)的方法當(dāng)然也可以用,不過(guò)它會(huì)提示已經(jīng)過(guò)時(shí),如下圖所示:
但是如果是字符串類(lèi)型的字母,就會(huì)運(yùn)行錯(cuò)誤,它識(shí)別的是字符串類(lèi)型的數(shù)字
Integer i3=new Integer("asd");//這里就會(huì)運(yùn)行錯(cuò)誤
不建議使用上面的兩種形式,建議使用這種格式:Integer i1=Integer.valueOf();
public class IntegerDemo { public static void main(String[] args) { Integer i1=Integer.valueOf(123);//數(shù)字類(lèi)型 System.out.println(i1); Integer i2=Integer.valueOf("123");//字符串類(lèi)型 } }
1.3 int和String的相互轉(zhuǎn)換
簡(jiǎn)單的方式:“字符串”+數(shù)字,得出來(lái)的是拼接的字符串
int number=100; String s1=""+number;
方式二官方版:
這里可以用官方文檔給我們提示的進(jìn)行,這里用的是valueOf進(jìn)行轉(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)換為字符串類(lèi)型 System.out.println(s1); System.out.println("----------"); //字符串轉(zhuǎn)換為int String s2="100"; // 方式一: //String--->Integer--->int Integer i1=Integer.valueOf(s2); //通過(guò)幫助文檔發(fā)現(xiàn), // intValue()用來(lái)返回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ù)排序
需求:有一個(gè)字符串:“91 27 46 38 50”,請(qǐng)寫(xiě)程序最終輸出的結(jié)果是:“27,38,46,50,91”.
思路:
代碼展示:
public class IntegerDemo { public static void main(String[] args) { //定義字符串 String s="91 27 46 38 56"; //將字符串中數(shù)據(jù)抽離出來(lái),以空格作為分割點(diǎn) String[] s1 = s.split(" "); //定義一個(gè)int數(shù)組,用于存這些數(shù)據(jù) int []arr=new int[s1.length];//以s1的長(zhǎng)度 //轉(zhuǎn)換為int類(lèi)型 for (int i = 0; i < s1.length; i++) { arr[i] = Integer.parseInt(s1[i]); //賦值 } //進(jìn)行排序 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 自動(dòng)裝箱和拆箱
裝箱: 把基本數(shù)據(jù)類(lèi)型轉(zhuǎn)換為對(duì)應(yīng)包裝類(lèi)型拆箱: 把包裝類(lèi)型轉(zhuǎn)換為基本數(shù)據(jù)類(lèi)型
先看裝箱:通過(guò)定義我們可以看出,裝箱把基本數(shù)據(jù)類(lèi)型轉(zhuǎn)化為對(duì)應(yīng)包裝類(lèi)型,例如:
Inter i=Integer.valueOf(100);//這里先把100轉(zhuǎn)化為Inter類(lèi)型,賦值 Integer i1=100;//這里java5之后就在jdk內(nèi)部 //已經(jīng)潛移默化的為我們包裝好了 //它等同于上步
拆箱:與裝箱執(zhí)行相反的步驟
Integer i1=100; //拆箱:轉(zhuǎn)換為int型,用intValue()這個(gè)方法 //然后進(jìn)行基本類(lèi)型的運(yùn)算后再賦值給i1 //完成自動(dòng)拆箱 i1=i1.intValue()+200;//最后賦值是自動(dòng)裝箱
自動(dòng)拆箱:省去了轉(zhuǎn)化為int類(lèi)型的基本數(shù)據(jù)類(lèi)型,直接進(jìn)行運(yùn)算
Integer i1=100; i1+=200;//內(nèi)部隱含了自動(dòng)拆箱和自動(dòng)裝箱
注意
如果定義時(shí),定義的Integer i=null;
那么i進(jìn)行運(yùn)算時(shí)會(huì)運(yùn)行錯(cuò)誤,這里要注意,引用類(lèi)型的最好要判斷是否為null
,只要是對(duì)象,就必須判斷是否為空
2. Date類(lèi)
要注意,Date類(lèi)導(dǎo)包時(shí)要清楚自己導(dǎo)的哪個(gè)包
構(gòu)造方法:
Date 代表了指定時(shí)間,精確到毫秒
舉例:注意!在這里導(dǎo)入的util包下的
public class DateDemo { public static void main(String[] args) { Date d=new Date(); //按道理輸出的應(yīng)該是地址,結(jié)果輸出了時(shí)間,因?yàn)橹貙?xiě)了toString方法 System.out.println(d); //有參構(gòu)造 long data=1000*60*60;//毫秒*1000->秒->*60->分鐘->*60->小時(shí) Date d2=new Date(data); System.out.println(d2); } }
運(yùn)行結(jié)果:
Wed Dec 15 17:51:04 CST 2021
Thu Jan 01 09:00:00 CST 1970//其中09:00:00是時(shí)區(qū)
2.1 Date常用方法
public long getTime() 獲取的是日期對(duì)象,從1970年1月1日00:00:00到現(xiàn)在的毫秒
public void setTime(long time) 設(shè)置時(shí)間,給的是毫秒值
getTime: public class DateDemo { public static void main(String[] args) { Date d=new Date(); //獲取時(shí)間 System.out.println(d.getTime()*1.0/1000/60/60/24/365+"年"); } }
運(yùn)行結(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); } }
運(yùn)行結(jié)果:
Thu Jan 01 09:00:00 CST 1970
3. SimpleDateFormat類(lèi)
概述
SimpleDateFormat是一個(gè)具體的類(lèi),用于以區(qū)域設(shè)置敏感的方式格式化和解析日期。重點(diǎn)學(xué)習(xí)日期格式化和解析化
日期和時(shí)間格式由日期和時(shí)間模式字符串指定,在日期和時(shí)間模式字符串中,從‘A'到‘Z'以及從‘a(chǎn)'到‘z'引號(hào)的字母被解釋為表示日期或時(shí)間字符串的組件的模式字母
常用模式字母對(duì)應(yīng)關(guān)系
- y…年
- M…月
- d…天
- H…時(shí)
- m…分
- s…秒
構(gòu)造方法
SimpleDateFormat格式化與解析日期
格式化(從Date到String)public final String format(Date date):將日期格式化成日期/時(shí)間字符串
解析(從String到Date)public Date parse(String souce):從給定字符串的開(kāi)始解析文本以生成日期
舉例
格式化
import java.text.SimpleDateFormat; import java.util.Date; public class SimpleDateFormatDemo { public static void main(String[] args) { //格式化 Date d=new Date(); //無(wú)參構(gòu)造 //先創(chuàng)建SimpleDateFormat類(lèi) SimpleDateFormat sdf = new SimpleDateFormat(); //通過(guò)對(duì)象調(diào)用方法 String s = sdf.format(d); System.out.println(s); } }
運(yùn)行結(jié)果:
2021/12/15 下午7:11
為了看起來(lái)更加方便,可以自己設(shè)置模式:傳遞參數(shù):
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
運(yùn)行結(jié)果
解析
要注意的點(diǎn):字符串模式的格式要和傳參一樣
2021-12-15 12:00:00要和yyyy-MM-dd HH:mm:ss"格式對(duì)應(yīng),例如都需要-,在代碼下面會(huì)提示異常,要拋出異常,快捷鍵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類(lèi) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//這里格式要和模式的一樣 //通過(guò)對(duì)象調(diào)用方法 Date ss = sdf.parse(s); //拋出異常Alt+Enter System.out.println(ss); } }
3.1 案例-日期工具類(lèi)
工具類(lèi):
import java.util.Date; import java.text.ParseException; import java.text.SimpleDateFormat; /* 工具類(lèi):構(gòu)造方法私有,成員靜態(tài) */ public class DateUtils { private DateUtils() {} //方法,把日期轉(zhuǎn)化為指定格式的字符串 //返回類(lèi)型: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)化為指定格式的日期 //返回類(lèi)型: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; } }
測(cè)試類(lèi):
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)建日期對(duì)象 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); } }
運(yùn)行結(jié)果:
4. Calendar類(lèi)-日歷
概述
Calendar為某一時(shí)刻和一組日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段提供了一些方法
Calendar提供了一個(gè)類(lèi)方法getlnstance用于獲取Calendar對(duì)象,其日歷字段已使用當(dāng)前日期和時(shí)間
初始化: Calendar rightNow = Calendar.getInstance();
import java.util.Calendar; public class CalendarDemo { public static void main(String[] args) { //獲取對(duì)象 Calendar c = Calendar.getInstance();//多態(tài)的形式 int year = c.get(Calendar.YEAR);//因?yàn)樽侄问庆o態(tài)修飾的,所以通過(guò)對(duì)象調(diào)用字段 //即Calendar.YEAR int month = c.get(Calendar.MONTH)+1;//一定要注意,月份是從0開(kāi)始的,要+1 int date = c.get(Calendar.DATE); System.out.println(year+"年"+month+"月"+date+"日"); } }
注意:這里的月份是從0開(kāi)始的,所以在使用時(shí)要+1
運(yùn)行結(jié)果:
2021年12月15日
4.1 Calendar 的常用方法
add()方法,由于在默認(rèn)類(lèi)中重寫(xiě)了方法,所以這里可以直接使用
import java.util.Calendar; public class CalendarDemo { public static void main(String[] args) { //獲取對(duì)象 Calendar c = Calendar.getInstance();//多態(tài)的形式 c.add(Calendar.YEAR,10);//在現(xiàn)在的基礎(chǔ)上增加十年 c.add(Calendar.DATE,-5);//在原來(lái)的基礎(chǔ)上-5天 int year = c.get(Calendar.YEAR);//因?yàn)樽侄问庆o態(tài)修飾的,所以通過(guò)對(duì)象調(diào)用字段 //即Calendar.YEAR int month = c.get(Calendar.MONTH)+1;//一定要注意,月份是從0開(kāi)始的,要+1 int date = c.get(Calendar.DATE); System.out.println(year+"年"+month+"月"+date+"日"); } }
運(yùn)行結(jié)果:
set()方法
import java.util.Calendar; public class CalendarDemo { public static void main(String[] args) { //獲取對(duì)象 Calendar c = Calendar.getInstance();//多態(tài)的形式 c.set(2022,11,05);//這里11出來(lái)的結(jié)果會(huì)是12 int year = c.get(Calendar.YEAR);//因?yàn)樽侄问庆o態(tài)修飾的,所以通過(guò)對(duì)象調(diào)用字段 //即Calendar.YEAR int month = c.get(Calendar.MONTH)+1;//一定要注意,月份是從0開(kāi)始的,要+1 int date = c.get(Calendar.DATE); System.out.println(year+"年"+month+"月"+date+"日"); } }
運(yùn)行結(jié)果:
以上就是JavaSE系列基礎(chǔ)包裝類(lèi)及日歷類(lèi)詳解的詳細(xì)內(nèi)容,更多關(guān)于JavaSE 基礎(chǔ)包裝類(lèi) 日歷類(lèi)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
spring通過(guò)構(gòu)造函數(shù)注入實(shí)現(xiàn)方法分析
這篇文章主要介紹了spring通過(guò)構(gòu)造函數(shù)注入實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了spring通過(guò)構(gòu)造函數(shù)注入的原理、實(shí)現(xiàn)步驟及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10MyEclipse設(shè)置Console輸出到文件的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇MyEclipse設(shè)置Console輸出到文件的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07使用java編程從0到1實(shí)現(xiàn)一個(gè)簡(jiǎn)單計(jì)算器
這篇文章主要介紹了使用java編程從0到1實(shí)現(xiàn)一個(gè)簡(jiǎn)單計(jì)算器,文章中用代碼實(shí)例講解的很清晰,有感興趣的同學(xué)可以學(xué)習(xí)研究下2021-02-02Java開(kāi)發(fā)實(shí)現(xiàn)猜拳游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08Feign?請(qǐng)求動(dòng)態(tài)URL方式
這篇文章主要介紹了Feign?請(qǐng)求動(dòng)態(tài)URL方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Mybatis-Plus實(shí)現(xiàn)自動(dòng)生成代碼的操作步驟
AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過(guò) AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個(gè)模塊的代碼,極大的提升了開(kāi)發(fā)效率,本文將給大家介紹Mybatis-Plus實(shí)現(xiàn)自動(dòng)生成代碼的操作步驟2023-10-10SpringCloud zuul 網(wǎng)關(guān)如何解決跨域問(wèn)題
這篇文章主要介紹了SpringCloud zuul網(wǎng)關(guān)解決跨域問(wèn)題的具體實(shí)現(xiàn)方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06