3.3 Java 中必須了解的常用類(常用工具類)

1、Java 中的包裝類

相信各位小伙伴們對(duì)基本數(shù)據(jù)類型都非常熟悉,例如 int、float、double、boolean、char 等?;緮?shù)據(jù)類型是不具備對(duì)象的特性的,比如基本類型不能調(diào)用方法、功能簡單。。。,為了讓基本數(shù)據(jù)類型也具備對(duì)象的特性, Java 為每個(gè)基本數(shù)據(jù)類型都提供了一個(gè)包裝類,這樣我們就可以像操作對(duì)象那樣來操作基本數(shù)據(jù)類型。

基本類型和包裝類之間的對(duì)應(yīng)關(guān)系:

基本類型 對(duì)應(yīng)的包裝類
byte Byte
short Short
int Interger
long Long
float Float
double Double
char Character
boolean Boolean

包裝類主要提供了兩大類方法:

  1. 將本類型和其他基本類型進(jìn)行轉(zhuǎn)換的方法

  2. 將字符串和本類型及包裝類互相轉(zhuǎn)換的方法

我們將在后面的小節(jié)逐步講解,表著急哦~~

public class HelloWorld {
    public static void main(String[] args) {
        
        // 定義int類型變量,值為86
        int score1 = 86; 
        
        // 創(chuàng)建Integer包裝類對(duì)象,表示變量score1的值
        Integer score2=new Integer(score1);
        
        // 將Integer包裝類轉(zhuǎn)換為double類型
        double score3=score2.doubleValue();
        
        // 將Integer包裝類轉(zhuǎn)換為float類型
        float score4=score2.floatValue();
        
        // 將Integer包裝類轉(zhuǎn)換為int類型
        int score5 =score2.intValue();

        System.out.println("Integer包裝類:" + score2);
        System.out.println("double類型:" + score3);
        System.out.println("float類型:" + score4);
        System.out.println("int類型:" + score5);
    }
}

2、Java 中基本類型和包裝類之間的轉(zhuǎn)換

基本類型和包裝類之間經(jīng)常需要互相轉(zhuǎn)換,以 Integer 為例(其他幾個(gè)包裝類的操作雷同哦):

Integer a=new Tnterger(3);//定義Interger包裝類對(duì)象,值為3
int b=a+5;//將對(duì)象和基本類型進(jìn)行運(yùn)算

在 JDK1.5 引入自動(dòng)裝箱和拆箱的機(jī)制后,包裝類和基本類型之間的轉(zhuǎn)換就更加輕松便利了。
那什么是裝箱和拆箱呢?我們分別來看下
裝箱:把基本類型轉(zhuǎn)換成包裝類,使其具有對(duì)象的性質(zhì),又可分為手動(dòng)裝箱和自動(dòng)裝箱

int i=10;//定義一個(gè)int基本類型值
Integer x=new Integer(i);//手動(dòng)裝箱
Integer y =i;//自動(dòng)裝箱

拆箱:和裝箱相反,把包裝類對(duì)象轉(zhuǎn)換成基本類型的值,又可分為手動(dòng)拆箱和自動(dòng)拆箱

Integer j=new Integer(8);//定義一個(gè)Integer包裝類對(duì)象,值為8
int m=j.intValue();//手動(dòng)拆箱為int類型
int n=j;//自動(dòng)拆箱為int類型
public class HelloWorld {
    public static void main(String[] args) {
        
        // 定義double類型變?cè)?JDK1.5 引入自動(dòng)裝箱和拆箱的機(jī)制后,包裝類和基本類型之間的轉(zhuǎn)換就更加輕松便利了。

那什么是裝箱和拆箱呢?我們分別來看下

裝箱:把基本類型轉(zhuǎn)換成包裝類,使其具有對(duì)象的性質(zhì),又可分為手動(dòng)裝箱和自動(dòng)裝箱量
        double a = 91.5;
        
         // 手動(dòng)裝箱
        Double b = new Double(a);       
        
        // 自動(dòng)裝箱
        Double c =a;       

        System.out.println("裝箱后的結(jié)果為:" + b + "和" + c);
        
        // 定義一個(gè)Double包裝類對(duì)象,值為8
        Double d = new Double(87.0);
        
        // 手動(dòng)拆箱
        double e = d.doubleValue();
        
        // 自動(dòng)拆箱
        double f =d ;
        
         System.out.println("拆箱后的結(jié)果為:" + e + "和" + f);
    }
}

3、Java 中基本類型和字符串之間的轉(zhuǎn)換

在程序開發(fā)中,我們經(jīng)常需要在基本數(shù)據(jù)類型和字符串之間進(jìn)行轉(zhuǎn)換。
其中,基本類型轉(zhuǎn)換為字符串有三種方法:
1、 使用包裝類的 toString() 方法
2、使用String類的 valueOf() 方法
3、 用一個(gè)空字符串加上基本類型,得到的就是基本類型數(shù)據(jù)對(duì)應(yīng)的字符串

 //將基本類型轉(zhuǎn)換為字符串
 int c=10;
 String str1=Integer.toString(c);//方法一
 String str2=String.valueOf(c);//方法二
 String str3=c+"";//方法三

再來看,將字符串轉(zhuǎn)換成基本類型有兩種方法:
1、 調(diào)用包裝類的 parseXxx 靜態(tài)方法
2、 調(diào)用包裝類的 valueOf() 方法轉(zhuǎn)換為基本類型的包裝類,會(huì)自動(dòng)拆箱

 //將字符串轉(zhuǎn)換為基本類型
 String str="8";
 int d=Integer.parseInt(str);方法一
 int e=Integer.valueOf(str);方法二

PS:其他基本類型與字符串的相互轉(zhuǎn)化這里不再一一列出,方法都類似

public class HelloWorld {
    public static void main(String[] args) {
        
        double m = 78.5;
        //將基本類型轉(zhuǎn)換為字符串
        String str1 = Integer.toString(m)  ;
        
        System.out.println("m 轉(zhuǎn)換為String型后與整數(shù)20的求和結(jié)果為: "+(str1+20));
        
        String str = "180.20";
        // 將字符串轉(zhuǎn)換為基本類型
        Double a = Integet.parseInt(str) ;
    
        System.out.println("str 轉(zhuǎn)換為double型后與整數(shù)20的求和結(jié)果為: "+(a+20));
    }
}

4、使用 Date 和 SimpleDateFormat 類表示時(shí)間

在程序開發(fā)中,經(jīng)常需要處理日期和時(shí)間的相關(guān)數(shù)據(jù),此時(shí)我們可以使用 java.util 包中的 Date 類。這個(gè)類最主要的作用就是獲取當(dāng)前時(shí)間,我們來看下 Date 類的使用:

 Date d=new Date();//使用默認(rèn)的構(gòu)造方法創(chuàng)建Date對(duì)象
 System.out.println(d);//輸出Date對(duì)象

使用 Date 類的默認(rèn)無參構(gòu)造方法創(chuàng)建出的對(duì)象就代表當(dāng)前時(shí)間,我們可以直接輸出 Date 對(duì)象顯示當(dāng)前的時(shí)間,顯示的結(jié)果如下:

Wed Jun 11 09:22:30 CST 2014

其中, Wed 代表 Wednesday (星期三), Jun 代表 June (六月), 11 代表 11 號(hào), CST 代表 China Standard Time (中國標(biāo)準(zhǔn)時(shí)間,也就是北京時(shí)間,東八區(qū))。

從上面的輸出結(jié)果中,我們發(fā)現(xiàn),默認(rèn)的時(shí)間格式不是很友好,與我們?nèi)粘?吹降娜掌诟袷讲惶粯樱绻胍粗付ǖ母袷竭M(jìn)行顯示,如 2014-06-11 09:22:30 ,那該怎么做呢?

此時(shí)就到了 java.text 包中的 SimpleDateFormat 類大顯身手的時(shí)候了!!可以使用 SimpleDateFormat 來對(duì)日期時(shí)間進(jìn)行格式化,如可以將日期轉(zhuǎn)換為指定格式的文本,也可將文本轉(zhuǎn)換為日期。

  1. 使用 format() 方法將日期轉(zhuǎn)換為指定格式的文本

    //創(chuàng)建Date對(duì)象,表示當(dāng)前時(shí)間
     Date d=new Date();
    //創(chuàng)建SimpleDateFormat對(duì)象,指定目標(biāo)格式
     SipleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //調(diào)用format()方法,格式化時(shí)間,轉(zhuǎn)換為指定格式字符串
     String today=sdf.format(d);
     //輸出轉(zhuǎn)換后的字符串
     System.out.println(today);
    

代碼中的 “yyyy-MM-dd HH:mm:ss” 為預(yù)定義字符串, yyyy 表示四位年, MM 表示兩位月份, dd 表示兩位日期, HH 表示小時(shí)(使用24小時(shí)制), mm 表示分鐘, ss 表示秒,這樣就指定了轉(zhuǎn)換的目標(biāo)格式,最后調(diào)用 **format() 方法將時(shí)間轉(zhuǎn)換為指定的格式的字符串。
運(yùn)行結(jié)果:
2014-06-11 09:55:48 **

  1. 使用 parse() 方法將文本轉(zhuǎn)換為日期
    //創(chuàng)建日期格式的字符串
    String day="2014年02月14日10:30:25";
    //創(chuàng)建SimpleDateFormat df=new SimpleDateFormat("yyyy年MM月d日 HH:MM:ss");
    //調(diào)用parse()方法,將字符串轉(zhuǎn)換為日期
    Date date=df.parse(day);
    //輸出轉(zhuǎn)換后的時(shí)間
    System.out.println("當(dāng)前時(shí)間:"+date);
    代碼中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式,調(diào)用 **parse() **方法將文本轉(zhuǎn)換為日期。
    運(yùn)行結(jié)果:
    當(dāng)前時(shí)間:Fri Feb 14 10:30:25 CST 2014
    一定要注意哦:

1、 調(diào)用 SimpleDateFormat 對(duì)象的 parse() 方法時(shí)可能會(huì)出現(xiàn)轉(zhuǎn)換異常,即 ParseException ,因此需要進(jìn)行異常處理
2、 使用 Date 類時(shí)需要導(dǎo)入 java.util 包,使用 SimpleDateFormat 時(shí)需要導(dǎo)入 java.text 包

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloWorld {
    public static void main(String[] args) throws ParseException {
        
        // 使用format()方法將日期轉(zhuǎn)換為指定格式的文本
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH時(shí)mm分ss秒");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 創(chuàng)建Date對(duì)象,表示當(dāng)前時(shí)間
        Date now=new Date();
        
        // 調(diào)用format()方法,將日期轉(zhuǎn)換為字符串并輸出
        System.out.println(sdf1.format(now));
        System.out.println(sdf2.format(now));
        System.out.println(sdf3.format(now));

        // 使用parse()方法將文本轉(zhuǎn)換為日期
        String d = "2014-6-1 21:05:36";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
         // 調(diào)用parse()方法,將字符串轉(zhuǎn)換為日期
        Date date =df.parse(day);
        
        System.out.println(date);
    }
}

5、Calendar 類的應(yīng)用

Date 類最主要的作用就是獲得當(dāng)前時(shí)間,同時(shí)這個(gè)類里面也具有設(shè)置時(shí)間以及一些其他的功能,但是由于本身設(shè)計(jì)的問題,這些方法卻遭到眾多批評(píng),不建議使用,更推薦使用 Calendar 類進(jìn)行時(shí)間和日期的處理。
java.util.Calendar 類是一個(gè)抽象類,可以通過調(diào)用 getInstance()** **靜態(tài)方法獲取一個(gè) Calendar 對(duì)象,此對(duì)象已由當(dāng)前日期時(shí)間初始化,即默認(rèn)代表當(dāng)前時(shí)間,如 Calendar c = Calendar.getInstance();
那么如何使用 Calendar 獲取年、月、日、時(shí)間等信息呢?我們來看下面的代碼:

Calendar c=Calendar,getInstance();//創(chuàng)建Calendar對(duì)象
int year=c.get(Calendar.YEAR);//獲取年
int month=c.get(Calendar.MONTH)+1;//獲取月份,0表示1月份
int day=c.get(Calendar.DAY_OF_MONTH);//獲取日期
int hour=c.get(Calendar.HOUR_OF_DAY);//獲取小時(shí)
int minute=c.get(Calendar.MINUTE);//獲取分鐘
int second=c.get(Calendar.SECOND);//獲取秒
System.out.println("當(dāng)前時(shí)間:"+year+"-"+month+"-"+day+"  "+hour+":"+minute+":"+second);

其中,調(diào)用 Calendar 類的 getInstance() 方法獲取一個(gè)實(shí)例,然后通過調(diào)用 get() 方法獲取日期時(shí)間信息,參數(shù)為需要獲得的字段的值, Calendar.Year 等為 Calendar 類中定義的靜態(tài)常量。

運(yùn)行結(jié)果: 
當(dāng)前時(shí)間:2014-6-11  11:13:50

Calendar 類提供了 getTime() 方法,用來獲取 Date 對(duì)象,完成 Calendar 和 Date 的轉(zhuǎn)換,還可通過 getTimeInMillis() 方法,獲取此 Calendar 的時(shí)間值,以毫秒為單位。如下所示:

Date date=c.getTime();//將Canlendar對(duì)象轉(zhuǎn)換為Date對(duì)象
Long time=c.getTimeInMillis();//獲取當(dāng)前毫秒數(shù)
System.out.println("當(dāng)前時(shí)間:"+date);
System.out.println("當(dāng)前毫秒數(shù):"+time);
運(yùn)行結(jié)果:
當(dāng)前時(shí)間:Wed Jun 11 11:26:59 CST 2014
當(dāng)前毫秒數(shù):1402457219381
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class HelloWorld {
    
    public static void main(String[] args) {
        // 創(chuàng)建Canlendar對(duì)象
        Calendar c = Calendar.getInstance();
        
        // 將Calendar對(duì)象轉(zhuǎn)換為Date對(duì)象
        Date date = c.getTime();
        
        // 創(chuàng)建SimpleDateFormat對(duì)象,指定目標(biāo)格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 將日期轉(zhuǎn)換為指定格式的字符串
        String now = sdf.format(date);
        System.out.println("當(dāng)前時(shí)間:" + now);
    }
}

6、使用 Math 類操作數(shù)據(jù)

Math 類位于 java.lang 包中,包含用于執(zhí)行基本數(shù)學(xué)運(yùn)算的方法, Math 類的所有方法都是靜態(tài)方法,所以使用該類中的方法時(shí),可以直接使用類名.方法名,如: Math.round();
常用的方法:

返回值 方法名 解釋
long round() 返回四舍五入后的整數(shù)
double floor() 返回小于參數(shù)的最大整數(shù)
double ccell() 返回大于參數(shù)的最大整數(shù)
double random() 返回[0,1)之間的隨機(jī)數(shù)浮點(diǎn)數(shù)
double a=12.81;//定義一個(gè)double類型變量
int b=(int)a;//將double類型強(qiáng)制轉(zhuǎn)換為int類型,去掉小數(shù)位
System.out.println("強(qiáng)制類型轉(zhuǎn)換:"+b);
long c=Math.round(a);//調(diào)用round方法,進(jìn)行四舍五入
System.out.println("四舍五入:"+c);
double d=Math.floor(a);//調(diào)用floor方法,返回小于參數(shù)的最大整數(shù)
System.out.println("floor:"+d);
double e=Math.ceil(a);//調(diào)用ceil方法,返回大于參數(shù)的最小整數(shù)
System.out.println("ceil:"+e);
double x=Math.random();//調(diào)用random方法,產(chǎn)生[0,1)之間的隨機(jī)浮點(diǎn)數(shù)
System.out.println("隨機(jī)數(shù):"+x);
int y=(int)(Math.random()*99);//調(diào)用random方法,產(chǎn)生[0,99)之間的隨機(jī)z整數(shù)
System.out.println("產(chǎn)生[0,99)之間的隨機(jī)整數(shù):"+y);

運(yùn)行結(jié)果:
強(qiáng)制類型轉(zhuǎn)換:12
四舍五入:13
floor:12.0
ceil:13.0
隨機(jī)數(shù):0.42585849456602687
產(chǎn)生[0,99)之間的隨機(jī)整數(shù):30
public class HelloWorld {
    
    public static void main(String[] args) {
        
        // 定義一個(gè)整型數(shù)組,長度為10
        int[] nums =new int[10] 
        
        //通過循環(huán)給數(shù)組賦值
        for (int i = 0; i < nums.length; i++) {
            // 產(chǎn)生10以內(nèi)的隨機(jī)數(shù)
            int x = Math.random();
            
            nums[i] = x;// 為元素賦值
        }
        
        // 使用foreach循環(huán)輸出數(shù)組中的元素
        for (int i = 0; i < nums.length; i++) {
            System.out.print(num + " ");
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 學(xué)習(xí)了解# Java中的包裝類 Java中基本類型和包裝類型之間的轉(zhuǎn)換 Java中基本類型和字符串之間的轉(zhuǎn)換 使用...
    擼碼小狂魔閱讀 378評(píng)論 0 1
  • 第05天API 今日內(nèi)容介紹 ·Object類& System類 ·日期相關(guān)類 ·包裝類&正則表達(dá)式 ·Date對(duì)...
    chcvn閱讀 513評(píng)論 0 1
  • 自從JDK 1.0開始,Java就提供了Date來處理時(shí)間和日期,作為老古董自然有很多東西是過時(shí)的。然后出現(xiàn)了Ca...
    湫水長天閱讀 2,149評(píng)論 0 16
  • 山 東 一到秋天,山東仿如進(jìn)入了童話世界。 這里氣溫宜人,景色秀美。落葉、碧空、陽光或是綿綿秋雨,伴隨著秋日的美景...
    喝喝水跳跳舞閱讀 337評(píng)論 0 0
  • 有如下代碼,解釋Person、 prototype、proto、p、constructor之間的關(guān)聯(lián)。 上例中,對(duì)...
    饑人谷_saybye閱讀 330評(píng)論 0 0

友情鏈接更多精彩內(nèi)容