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

1、Java 中的包裝類

相信各位小伙伴們對基本數(shù)據(jù)類型都非常熟悉尼摹,例如 int见芹、float、double蠢涝、boolean玄呛、char 等『投基本數(shù)據(jù)類型是不具備對象的特性的徘铝,比如基本類型不能調(diào)用方法、功能簡單。庭砍。场晶。混埠,為了讓基本數(shù)據(jù)類型也具備對象的特性怠缸, Java 為每個基本數(shù)據(jù)類型都提供了一個包裝類,這樣我們就可以像操作對象那樣來操作基本數(shù)據(jù)類型钳宪。

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

基本類型 對應的包裝類
byte Byte
short Short
int Interger
long Long
float Float
double Double
char Character
boolean Boolean

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

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

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

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

public class HelloWorld {
    public static void main(String[] args) {
        
        // 定義int類型變量,值為86
        int score1 = 86; 
        
        // 創(chuàng)建Integer包裝類對象吏颖,表示變量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 為例(其他幾個包裝類的操作雷同哦):

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

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

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

拆箱:和裝箱相反衬吆,把包裝類對象轉(zhuǎn)換成基本類型的值梁钾,又可分為手動拆箱和自動拆箱

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

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

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

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

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

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

 //將基本類型轉(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)換為基本類型的包裝類,會自動拆箱

 //將字符串轉(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 類表示時間

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

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

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

Wed Jun 11 09:22:30 CST 2014

其中颓屑, Wed 代表 Wednesday (星期三), Jun 代表 June (六月)耿焊, 11 代表 11 號揪惦, CST 代表 China Standard Time (中國標準時間,也就是北京時間罗侯,東八區(qū))器腋。

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

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

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

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

代碼中的 “yyyy-MM-dd HH:mm:ss” 為預定義字符串昔瞧, yyyy 表示四位年, MM 表示兩位月份菩佑, dd 表示兩位日期自晰, HH 表示小時(使用24小時制), mm 表示分鐘稍坯, ss 表示秒酬荞,這樣就指定了轉(zhuǎn)換的目標格式,最后調(diào)用 **format() 方法將時間轉(zhuǎ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)換后的時間
    System.out.println("當前時間:"+date);
    代碼中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式枪向,調(diào)用 **parse() **方法將文本轉(zhuǎn)換為日期。
    運行結(jié)果:
    當前時間:Fri Feb 14 10:30:25 CST 2014
    一定要注意哦:

1咧党、 調(diào)用 SimpleDateFormat 對象的 parse() 方法時可能會出現(xiàn)轉(zhuǎn)換異常秘蛔,即 ParseException ,因此需要進行異常處理
2凿傅、 使用 Date 類時需要導入 java.util 包缠犀,使用 SimpleDateFormat 時需要導入 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時mm分ss秒");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 創(chuàng)建Date對象,表示當前時間
        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 類的應用

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

Calendar c=Calendar,getInstance();//創(chuàng)建Calendar對象
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);//獲取小時
int minute=c.get(Calendar.MINUTE);//獲取分鐘
int second=c.get(Calendar.SECOND);//獲取秒
System.out.println("當前時間:"+year+"-"+month+"-"+day+"  "+hour+":"+minute+":"+second);

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

運行結(jié)果: 
當前時間:2014-6-11  11:13:50

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

Date date=c.getTime();//將Canlendar對象轉(zhuǎn)換為Date對象
Long time=c.getTimeInMillis();//獲取當前毫秒數(shù)
System.out.println("當前時間:"+date);
System.out.println("當前毫秒數(shù):"+time);
運行結(jié)果:
當前時間:Wed Jun 11 11:26:59 CST 2014
當前毫秒數(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對象
        Calendar c = Calendar.getInstance();
        
        // 將Calendar對象轉(zhuǎn)換為Date對象
        Date date = c.getTime();
        
        // 創(chuàng)建SimpleDateFormat對象,指定目標格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 將日期轉(zhuǎn)換為指定格式的字符串
        String now = sdf.format(date);
        System.out.println("當前時間:" + now);
    }
}

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

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

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

運行結(jié)果:
強制類型轉(zhuǎn)換:12
四舍五入:13
floor:12.0
ceil:13.0
隨機數(shù):0.42585849456602687
產(chǎn)生[0,99)之間的隨機整數(shù):30
public class HelloWorld {
    
    public static void main(String[] args) {
        
        // 定義一個整型數(shù)組较鼓,長度為10
        int[] nums =new int[10] 
        
        //通過循環(huán)給數(shù)組賦值
        for (int i = 0; i < nums.length; i++) {
            // 產(chǎn)生10以內(nèi)的隨機數(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)容合作請聯(lián)系作者
  • 序言:七十年代末椎木,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子博烂,更是在濱河造成了極大的恐慌香椎,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禽篱,死亡現(xiàn)場離奇詭異畜伐,居然都是意外死亡,警方通過查閱死者的電腦和手機躺率,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門玛界,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肥照,你說我怎么就攤上這事脚仔。” “怎么了舆绎?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵鲤脏,是天一觀的道長。 經(jīng)常有香客問我吕朵,道長猎醇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任努溃,我火速辦了婚禮硫嘶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梧税。我一直安慰自己沦疾,他們只是感情好称近,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哮塞,像睡著了一般刨秆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忆畅,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天衡未,我揣著相機與錄音,去河邊找鬼家凯。 笑死缓醋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的绊诲。 我是一名探鬼主播送粱,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驯镊!你這毒婦竟也來了葫督?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤板惑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后偎快,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冯乘,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年晒夹,在試婚紗的時候發(fā)現(xiàn)自己被綠了裆馒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡丐怯,死狀恐怖喷好,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情读跷,我是刑警寧澤梗搅,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站效览,受9級特大地震影響无切,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丐枉,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一哆键、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瘦锹,春花似錦籍嘹、人聲如沸闪盔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泪掀。三九已至,卻和暖如春识补,著一層夾襖步出監(jiān)牢的瞬間族淮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工凭涂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祝辣,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓切油,卻偏偏與公主長得像蝙斜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子澎胡,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容