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其它相關文章!

推薦閱讀: