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

weixin_33831196發表於2016-09-25

1、Java 中的包裝類

相信各位小夥伴們對基本資料型別都非常熟悉,例如 int、float、double、boolean、char 等。基本資料型別是不具備物件的特性的,比如基本型別不能呼叫方法、功能簡單。。。,為了讓基本資料型別也具備物件的特性, Java 為每個基本資料型別都提供了一個包裝類,這樣我們就可以像操作物件那樣來操作基本資料型別。

基本型別和包裝類之間的對應關係:

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

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

  1. 將本型別和其他基本型別進行轉換的方法

  2. 將字串和本型別及包裝類互相轉換的方法

我們將在後面的小節逐步講解,表著急哦~~

public class HelloWorld {
    public static void main(String[] args) {
        
        // 定義int型別變數,值為86
        int score1 = 86; 
        
        // 建立Integer包裝類物件,表示變數score1的值
        Integer score2=new Integer(score1);
        
        // 將Integer包裝類轉換為double型別
        double score3=score2.doubleValue();
        
        // 將Integer包裝類轉換為float型別
        float score4=score2.floatValue();
        
        // 將Integer包裝類轉換為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 中基本型別和包裝類之間的轉換

基本型別和包裝類之間經常需要互相轉換,以 Integer 為例(其他幾個包裝類的操作雷同哦):

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

在 JDK1.5 引入自動裝箱和拆箱的機制後,包裝類和基本型別之間的轉換就更加輕鬆便利了。
那什麼是裝箱和拆箱呢?我們分別來看下
裝箱:把基本型別轉換成包裝類,使其具有物件的性質,又可分為手動裝箱和自動裝箱

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

拆箱:和裝箱相反,把包裝類物件轉換成基本型別的值,又可分為手動拆箱和自動拆箱

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 引入自動裝箱和拆箱的機制後,包裝類和基本型別之間的轉換就更加輕鬆便利了。

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

裝箱:把基本型別轉換成包裝類,使其具有物件的性質,又可分為手動裝箱和自動裝箱量
        double a = 91.5;
        
         // 手動裝箱
        Double b = new Double(a);       
        
        // 自動裝箱
        Double c =a;       

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

3、Java 中基本型別和字串之間的轉換

在程式開發中,我們經常需要在基本資料型別和字串之間進行轉換。
其中,基本型別轉換為字串有三種方法:
1、 使用包裝類的 toString() 方法
2、使用String類的 valueOf() 方法
3、 用一個空字串加上基本型別,得到的就是基本型別資料對應的字串

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

再來看,將字串轉換成基本型別有兩種方法:
1、 呼叫包裝類的 parseXxx 靜態方法
2、 呼叫包裝類的 valueOf() 方法轉換為基本型別的包裝類,會自動拆箱

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

PS:其他基本型別與字串的相互轉化這裡不再一一列出,方法都類似

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

4、使用 Date 和 SimpleDateFormat 類表示時間

在程式開發中,經常需要處理日期和時間的相關資料,此時我們可以使用 java.util 包中的 Date 類。這個類最主要的作用就是獲取當前時間,我們來看下 Date 類的使用:

 Date d=new Date();//使用預設的構造方法建立Date物件
 System.out.println(d);//輸出Date物件

使用 Date 類的預設無參構造方法建立出的物件就代表當前時間,我們可以直接輸出 Date 物件顯示當前的時間,顯示的結果如下:

Wed Jun 11 09:22:30 CST 2014

其中, Wed 代表 Wednesday (星期三), Jun 代表 June (六月), 11 代表 11 號, CST 代表 China Standard Time (中國標準時間,也就是北京時間,東八區)。

從上面的輸出結果中,我們發現,預設的時間格式不是很友好,與我們日常看到的日期格式不太一樣,如果想要按指定的格式進行顯示,如 2014-06-11 09:22:30 ,那該怎麼做呢?

此時就到了 java.text 包中的 SimpleDateFormat 類大顯身手的時候了!!可以使用 SimpleDateFormat 來對日期時間進行格式化,如可以將日期轉換為指定格式的文字,也可將文字轉換為日期。

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

    //建立Date物件,表示當前時間
     Date d=new Date();
    //建立SimpleDateFormat物件,指定目標格式
     SipleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //呼叫format()方法,格式化時間,轉換為指定格式字串
     String today=sdf.format(d);
     //輸出轉換後的字串
     System.out.println(today);
    

程式碼中的 “yyyy-MM-dd HH:mm:ss” 為預定義字串, yyyy 表示四位年, MM 表示兩位月份, dd 表示兩位日期, HH 表示小時(使用24小時制), mm 表示分鐘, ss 表示秒,這樣就指定了轉換的目標格式,最後呼叫 **format() 方法將時間轉換為指定的格式的字串。
執行結果:
2014-06-11 09:55:48 **

  1. 使用 parse() 方法將文字轉換為日期
    //建立日期格式的字串
    String day="2014年02月14日10:30:25";
    //建立SimpleDateFormat df=new SimpleDateFormat("yyyy年MM月d日 HH:MM:ss");
    //呼叫parse()方法,將字串轉換為日期
    Date date=df.parse(day);
    //輸出轉換後的時間
    System.out.println("當前時間:"+date);
    程式碼中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字串的日期格式,呼叫 **parse() **方法將文字轉換為日期。
    執行結果:
    當前時間:Fri Feb 14 10:30:25 CST 2014
    一定要注意哦:

1、 呼叫 SimpleDateFormat 物件的 parse() 方法時可能會出現轉換異常,即 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()方法將日期轉換為指定格式的文字
        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");
        
        // 建立Date物件,表示當前時間
        Date now=new Date();
        
        // 呼叫format()方法,將日期轉換為字串並輸出
        System.out.println(sdf1.format(now));
        System.out.println(sdf2.format(now));
        System.out.println(sdf3.format(now));

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

5、Calendar 類的應用

Date 類最主要的作用就是獲得當前時間,同時這個類裡面也具有設定時間以及一些其他的功能,但是由於本身設計的問題,這些方法卻遭到眾多批評,不建議使用,更推薦使用 Calendar 類進行時間和日期的處理。
java.util.Calendar 類是一個抽象類,可以通過呼叫 getInstance()** **靜態方法獲取一個 Calendar 物件,此物件已由當前日期時間初始化,即預設代表當前時間,如 Calendar c = Calendar.getInstance();
那麼如何使用 Calendar 獲取年、月、日、時間等資訊呢?我們來看下面的程式碼:

Calendar c=Calendar,getInstance();//建立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);

其中,呼叫 Calendar 類的 getInstance() 方法獲取一個例項,然後通過呼叫 get() 方法獲取日期時間資訊,引數為需要獲得的欄位的值, Calendar.Year 等為 Calendar 類中定義的靜態常量。

執行結果: 
當前時間:2014-6-11  11:13:50

Calendar 類提供了 getTime() 方法,用來獲取 Date 物件,完成 Calendar 和 Date 的轉換,還可通過 getTimeInMillis() 方法,獲取此 Calendar 的時間值,以毫秒為單位。如下所示:

Date date=c.getTime();//將Canlendar物件轉換為Date物件
Long time=c.getTimeInMillis();//獲取當前毫秒數
System.out.println("當前時間:"+date);
System.out.println("當前毫秒數:"+time);
執行結果:
當前時間:Wed Jun 11 11:26:59 CST 2014
當前毫秒數:1402457219381
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class HelloWorld {
    
    public static void main(String[] args) {
        // 建立Canlendar物件
        Calendar c = Calendar.getInstance();
        
        // 將Calendar物件轉換為Date物件
        Date date = c.getTime();
        
        // 建立SimpleDateFormat物件,指定目標格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 將日期轉換為指定格式的字串
        String now = sdf.format(date);
        System.out.println("當前時間:" + now);
    }
}

6、使用 Math 類運算元據

Math 類位於 java.lang 包中,包含用於執行基本數學運算的方法, Math 類的所有方法都是靜態方法,所以使用該類中的方法時,可以直接使用類名.方法名,如: Math.round();
常用的方法:

返回值 方法名 解釋
long round() 返回四捨五入後的整數
double floor() 返回小於引數的最大整數
double ccell() 返回大於引數的最大整數
double random() 返回[0,1)之間的隨機數浮點數
double a=12.81;//定義一個double型別變數
int b=(int)a;//將double型別強制轉換為int型別,去掉小數位
System.out.println("強制型別轉換:"+b);
long c=Math.round(a);//呼叫round方法,進行四捨五入
System.out.println("四捨五入:"+c);
double d=Math.floor(a);//呼叫floor方法,返回小於引數的最大整數
System.out.println("floor:"+d);
double e=Math.ceil(a);//呼叫ceil方法,返回大於引數的最小整數
System.out.println("ceil:"+e);
double x=Math.random();//呼叫random方法,產生[0,1)之間的隨機浮點數
System.out.println("隨機數:"+x);
int y=(int)(Math.random()*99);//呼叫random方法,產生[0,99)之間的隨機z整數
System.out.println("產生[0,99)之間的隨機整數:"+y);

執行結果:
強制型別轉換:12
四捨五入:13
floor:12.0
ceil:13.0
隨機數:0.42585849456602687
產生[0,99)之間的隨機整數:30
public class HelloWorld {
    
    public static void main(String[] args) {
        
        // 定義一個整型陣列,長度為10
        int[] nums =new int[10] 
        
        //通過迴圈給陣列賦值
        for (int i = 0; i < nums.length; i++) {
            // 產生10以內的隨機數
            int x = Math.random();
            
            nums[i] = x;// 為元素賦值
        }
        
        // 使用foreach迴圈輸出陣列中的元素
        for (int i = 0; i < nums.length; i++) {
            System.out.print(num + " ");
        }
    }
}

相關文章