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 基礎包裝類 日歷類的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- 新手小白學JAVA 日期類Date SimpleDateFormat Calendar(入門)
- Java常用類之日期相關類使用詳解
- Java日期時間類(Date、DateFormat、Calendar)解析
- Java中Date日期時間類具體使用
- Java中的日期時間處理及格式化處理