1. 程式人生 > >11. Java常用類

11. Java常用類

運算 int end sub b+ ron 答案 intvalue small end

1. Scanner類

1.1 基本語法

java.util.Scanner 是 Java5 的新特征,我們可以通過 Scanner 類來獲取用戶的輸入。

Scanner s = new Scanner(System.in);

1.2 next方法

import java.util.Scanner; 

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in); 
    // 從鍵盤接收數據  

    //next方式接收字符串
        System.out.println("next方式接收:");
        // 判斷是否還有輸入
        if(scan.hasNext()){   
          String str1 = scan.next();
          System.out.println("輸入的數據為:"+str1);  
        }  

    }  
}

輸出結果:

$ javac ScannerDemo.java
$ java ScannerDemo
next方式接收:
rimi com
輸入的數據為:rimi

可以看到 com 字符串並未輸出

1.3 nextLine方法

import java.util.Scanner; 

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in); 
    // 從鍵盤接收數據  

    //nextLine方式接收字符串
        System.out.println("nextLine方式接收:");
        // 判斷是否還有輸入
        if(scan.hasNextLine()){   
          String str2 = scan.nextLine();
          System.out.println("輸入的數據為:"+str2);  
        }  

    }  
}

執行以上程序輸出結果為:

$ javac ScannerDemo.java
$ java ScannerDemo
nextLine方式接收:
rimi com
輸入的數據為:rimi com

可以看到 com 字符串輸出。

1.4 next與nextLine()的區別

next():

1、一定要讀取到有效字符後才可以結束輸入。
2、對輸入有效字符之前遇到的空白,next() 方法會自動將其去掉。
3、只有輸入有效字符後才將其後面輸入的空白作為分隔符或者結束符。
4、next() 不能得到帶有空格的字符串。

nextLine():

1、以Enter為結束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字符。
2、可以獲得空白。

1.5 使用Scanner輸入多種數據類型

如果要輸入 int 或 float 類型的數據,在 Scanner 類中也有支持,但是在輸入之前最好先使用 hasNextXxx() 方法進行驗證,再使用 nextXxx() 來讀取

import java.util.Scanner;  

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
    // 從鍵盤接收數據  
        int i = 0 ;  
        float f = 0.0f ;  
        System.out.print("輸入整數:");  
        if(scan.hasNextInt()){                 
      // 判斷輸入的是否是整數  
            i = scan.nextInt() ;                
      // 接收整數  
            System.out.println("整數數據:" + i) ;  
        }else{                                 
      // 輸入錯誤的信息  
            System.out.println("輸入的不是整數!") ;  
        }  
        System.out.print("輸入小數:");  
        if(scan.hasNextFloat()){              
      // 判斷輸入的是否是小數  
            f = scan.nextFloat() ;             
      // 接收小數  
            System.out.println("小數數據:" + f) ;  
        }else{                                
      // 輸入錯誤的信息  
            System.out.println("輸入的不是小數!") ;  
        }  
    }  
}

輸出結果:

$ javac ScannerDemo.java
$ java ScannerDemo
輸入整數:12
整數數據:12
輸入小數:1.2
小數數據:1.2

1.6 練習

1. 請輸入需要累加的整數,直到輸入 0 結束累加。

2. Number和Math類

2.1 什麽是包裝類

一般地,當需要使用數字的時候,我們通常使用內置數據類型,如:byte、int、long、double 等

int a = 5000;
float b = 13.65f;
byte c = 0x4a;

然而,在實際開發過程中,我們經常會遇到需要使用對象,而不是內置數據類型的情形。為了解決這個問題,Java 語言為每一個內置數據類型提供了對應的包裝類。

所有的包裝類(Integer、Long、Byte、Double、Float、Short)都是抽象類 Number 的子類。

技術分享

這種由編譯器特別支持的包裝稱為裝箱,所以當內置數據類型被當作對象使用的時候,編譯器會把內置類型裝箱為包裝類。相似的,編譯器也可以把一個對象拆箱為內置類型。Number 類屬於 java.lang 包。

public class Test{

   public static void main(String args[]){
      Integer x = 5;
      x =  x + 10;
      System.out.println(x); 
   }
}

當 x 被賦為整型值時,由於x是一個對象,所以編譯器要對x進行裝箱。然後,為了使x能進行加運算,所以要對x進行拆箱。

關於拆箱封箱

/**
* 
* java中的自動裝箱與拆箱
* 簡單一點說,裝箱就是自動將基本數據類型轉換為包裝器類型;拆箱就是自動將包裝器類型轉換為基本數據類型。
*/
public class NumberDemo {
    public static void main(String[] args) {
        /*
        Integer i1 = 128;  // 裝箱,相當於 Integer.valueOf(128);
        int t = i1; //相當於 i1.intValue() 拆箱
        System.out.println(t);
        */

        /*
        對於–128到127(默認是127)之間的值,被裝箱後,會被放在內存裏進行重用
        但是如果超出了這個值,系統會重新new 一個對象
        */
        Integer i1 = 200;
        Integer i2 = 200;

        /*
        註意 == 與 equals的區別
        == 它比較的是對象的地址
        equlas 比較的是對象的內容
        */
        if(i1==i2) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }
    }
}

2.2 Math類

Java 的 Math 包含了用於執行基本數學運算的屬性和方法,如初等指數、對數、平方根和三角函數。

Math 的方法都被定義為 static 形式,通過 Math 類可以在主函數中直接調用。

public class Test {  
    public static void main (String []args)  
    {  
        System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));  
        System.out.println("0度的余弦值:" + Math.cos(0));  
        System.out.println("60度的正切值:" + Math.tan(Math.PI/3));  
        System.out.println("1的反正切值: " + Math.atan(1));  
        System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));  
        System.out.println(Math.PI);  
    }  
}

結果如下:

90 度的正弦值:1.0
0度的余弦值:1.0
60度的正切值:1.7320508075688767
1的反正切值: 0.7853981633974483
π/2的角度值:90.0
3.141592653589793

2.3 number和Math類的方法

1   xxxValue()
將 Number 對象轉換為xxx數據類型的值並返回。
2   compareTo()
將number對象與參數比較。
3   equals()
判斷number對象是否與參數相等。
4   valueOf()
返回一個 Number 對象指定的內置數據類型
5   toString()
以字符串形式返回值。
6   parseInt()
將字符串解析為int類型。
7   abs()
返回參數的絕對值。
8   ceil()
對整形變量向左取整,返回類型為double型。
9   floor()
對整型變量向右取整。返回類型為double類型。
10  rint()
返回與參數最接近的整數。返回類型為double。
11  round()
返回一個最接近的int、long型值。
12  min()
返回兩個參數中的最小值。
13  max()
返回兩個參數中的最大值。
14  exp()
返回自然數底數e的參數次方。
15  log()
返回參數的自然數底數的對數值。
16  pow()
返回第一個參數的第二個參數次方。
17  sqrt()
求參數的算術平方根。
18  sin()
求指定double類型參數的正弦值。
19  cos()
求指定double類型參數的余弦值。
20  tan()
求指定double類型參數的正切值。
21  asin()
求指定double類型參數的反正弦值。
22  acos()
求指定double類型參數的反余弦值。
23  atan()
求指定double類型參數的反正切值。
24  atan2()
將笛卡爾坐標轉換為極坐標,並返回極坐標的角度值。
25  toDegrees()
將參數轉化為角度。
26  toRadians()
將角度轉換為弧度。
27  random()
返回一個隨機數。

舉例

    /** 
     * abs求絕對值 
     */  
    System.out.println(Math.abs(-10.4));    //10.4  
    System.out.println(Math.abs(10.1));     //10.1  

    /** 
     * ceil天花板的意思,就是返回大的值,註意一些特殊值 
     */  
    System.out.println(Math.ceil(-10.1));   //-10.0  
    System.out.println(Math.ceil(10.7));    //11.0  
    System.out.println(Math.ceil(-0.7));    //-0.0  
    System.out.println(Math.ceil(0.0));     //0.0  
    System.out.println(Math.ceil(-0.0));    //-0.0  

    /** 
     * floor地板的意思,就是返回小的值 
     */  
    System.out.println(Math.floor(-10.1));  //-11.0  
    System.out.println(Math.floor(10.7));   //10.0  
    System.out.println(Math.floor(-0.7));   //-1.0  
    System.out.println(Math.floor(0.0));    //0.0  
    System.out.println(Math.floor(-0.0));   //-0.0  

    /** 
     * max 兩個中返回大的值,min和它相反,就不舉例了 
     */  
    System.out.println(Math.max(-10.1, -10));   //-10.0  
    System.out.println(Math.max(10.7, 10));     //10.7  
    System.out.println(Math.max(0.0, -0.0));    //0.0  

    /** 
     * random 取得一個大於或者等於0.0小於不等於1.0的隨機數 
     */  
    System.out.println(Math.random());  //0.08417657924317234  
    System.out.println(Math.random());  //0.43527904004403717  

    /** 
     * rint 四舍五入,返回double值 
     * 註意.5的時候會取偶數 
     */  
    System.out.println(Math.rint(10.1));    //10.0  
    System.out.println(Math.rint(10.7));    //11.0  
    System.out.println(Math.rint(11.5));    //12.0  
    System.out.println(Math.rint(10.5));    //10.0  
    System.out.println(Math.rint(10.51));   //11.0  
    System.out.println(Math.rint(-10.5));   //-10.0  
    System.out.println(Math.rint(-11.5));   //-12.0  
    System.out.println(Math.rint(-10.51));  //-11.0  
    System.out.println(Math.rint(-10.6));   //-11.0  
    System.out.println(Math.rint(-10.2));   //-10.0  

    /** 
     * round 四舍五入,float時返回int值,double時返回long值 
     */  
    System.out.println(Math.round(10.1));   //10  
    System.out.println(Math.round(10.7));   //11  
    System.out.println(Math.round(10.5));   //11  
    System.out.println(Math.round(10.51));  //11  
    System.out.println(Math.round(-10.5));  //-10  
    System.out.println(Math.round(-10.51)); //-11  
    System.out.println(Math.round(-10.6));  //-11  
    System.out.println(Math.round(-10.2));  //-10  

3. Character類

3.1 Character類的用法

Character 類用於對單個字符進行操作。

Character 類在對象中包裝一個基本類型 char 的值

// 單個字符
char ch = ‘a‘;

// Unicode 字符表示形式
char uniChar = ‘\u039A‘; 

// 字符數組
char[] charArray ={ ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘ };

// 包裝類 Character
Character ch = new Character(‘a‘);

在某些情況下,Java編譯器會自動創建一個Character對象。

例如,將一個char類型的參數傳遞給需要一個Character類型參數的方法時,那麽編譯器會自動地將char類型參數轉換為Character對象。 這種特征稱為裝箱,反過來稱為拆箱。

public static void main(String[] args) {
    // 原始字符 ‘a‘ 裝箱到 Character 對象 character 中
    Character character = ‘a‘;
    // 原始字符 ‘x‘ 用 test 方法裝箱
    // 返回拆箱的值到 ch
    char ch = test(‘x‘);
}
public static char test(Character c) {
    return c;
}

3.2 轉義序列

前面有反斜杠(\)的字符代表轉義字符,它對編譯器來說是有特殊含義的。

\t  在文中該處插入一個tab鍵
\b  在文中該處插入一個後退鍵
\n  在文中該處換行
\r  在文中該處插入回車
\f  在文中該處插入換頁符
\‘  在文中該處插入單引號
\"  在文中該處插入雙引號
\\  在文中該處插入反斜杠

3.3 Character類的方法

1   isLetter()  是否是一個字母
2   isDigit()   是否是一個數字字符
3   isWhitespace()  是否是一個空格
4   isUpperCase()   是否是大寫字母
5   isLowerCase()   是否是小寫字母
6   toUpperCase()   指定字母的大寫形式
7   toLowerCase()   指定字母的小寫形式
8   toString()  返回字符的字符串形式,字符串的長度僅為1

4. String類

字符串廣泛應用 在Java 編程中,在 Java 中字符串屬於對象,Java 提供了 String 類來創建和操作字符串。

4.1 創建字符串

創建字符串最簡單的方式如下:

String greeting = "睿峰科技";

在代碼中遇到字符串常量時,這裏的值是 "睿峰科技"",編譯器會使用該值創建一個 String 對象。 和其它對象一樣,可以使用關鍵字和構造方法來創建 String 對象。 String 類有 11 種構造方法,這些方法提供不同的參數來初始化字符串,比如提供一個字符數組參數:

public class StringDemo{
   public static void main(String args[]){
      char[] nameArray = { ‘r‘, ‘i‘, ‘m‘, ‘i‘};
      String nameString = new String(nameArray);  
      System.out.println(nameString);
   }
}

註意:String 類是不可改變的,所以你一旦創建了 String 對象,那它的值就無法改變了。

如果需要對字符串做很多修改,那麽應該選擇使用 StringBuffer & StringBuilder 類。

String 類是不可改變的解析,例如:

String s = "Google";
System.out.println("s = " + s);

s = "Rimi";
System.out.println("s = " + s);

結果為:

Google
Rimi

從結果上看是改變了,但為什麽門說String對象是不可變的呢?

原因在於實例中的 s 只是一個 String 對象的引用,並不是對象本身,當執行 s = "Rimi"; 創建了一個新的對象 "Rimi",而原來的 "Google" 還存在於內存中。

4.2 字符串長度

用於獲取有關對象的信息的方法稱為訪問器方法。

String 類的一個訪問器方法是 length() 方法,它返回字符串對象包含的字符數。

public class StringDemo {
    public static void main(String args[]) {
        String site = "www.rimiedu.com";
        int len = site.length();
        System.out.println( "睿峰教育網址長度 : " + len );
   }
}

4.3 連接字符串

String 類提供了連接兩個字符串的方法:

string1.concat(string2);

更常用的是使用‘+‘操作符來連接字符串,如:

"Hello," + " rimi" + "!"

4.4 常用String類方法

1.字符串比較

compareTo
compareToIgnoreCase(//忽略大小寫)

2.查找字符串最後一次出現的位置

lastIndexOf

3.截取字符串出現

substring

4.字符串替換

replace
replaceFirst
replaceAll

5.字符串反轉

StringBuffer

6.字符串查找

indexOf

7.字符串分割

split

8.字符串小寫轉大寫

toUpperCase

9.測試兩個字符串區域是否相等

//參數說明:自己的起始位置,比較的 String, 比較的 String 的起始位置,比較長度。
regionMatches(11, second_str, 12, 9);
regionMatches(true, 11, second_str, 12, 9); //第一個參數 true 表示忽略大小寫區別

10.字符串性能比較測試

System.currentTimeMillis(); //利用獲取時間戳進行比較
//第一種創建形式
String s1 = "hello";
//第二種創建形式
String s2 = new String("hello");

11.字符串優化

1. 直接使用字符串
     String str  = "123";
     String str1 = "123";
2. 使用 new 關鍵字
     String str2 = new String("123");

字符串優化處理

12.連接字符串

字符串連接 - 使用 + 操作符

字符串連接 - 使用 StringBuffer/StringBuilder

StringBuffer
代碼示例:
   StringBuilder sb = new StringBuilder ( "" );   
        for ( int i= 0 ;i< 10 ;i++){   
               sb.append(String.valueOf(i)); 
               System.out.println(sb+",");
               }  

5. StringBuffer/StringBuilder類

當對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。

和 String 類不同的是,StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,並且不產生新的未使用對象。

StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在於 StringBuilder 的方法不是線程安全的(不能同步訪問)。

由於 StringBuilder 相較於 StringBuffer 有速度優勢,所以多數情況下建議使用 StringBuilder 類。然而在應用程序要求線程安全的情況下,則必須使用 StringBuffer 類。

public class Test{
  public static void main(String args[]){
    StringBuffer sBuffer = new StringBuffer("睿峰官網:");
    sBuffer.append("www");
    sBuffer.append(".rimi");
    sBuffer.append(".com");
    System.out.println(sBuffer);  
  }
}

StringBuffer方法:

1   public StringBuffer append(String s)    將指定的字符串追加到此字符序列。
2   public StringBuffer reverse()    將此字符序列用其反轉形式取代。
3   public delete(int start, int end)   移除此序列的子字符串中的字符。
4   public insert(int offset, int i)    將 int 參數的字符串表示形式插入此序列中。
5   replace(int start, int end, String str) 使用給定 String 中的字符替換此序列的子字符串中的字符。

Java 中 StringBuffer 和 String 是有一定的區別的

首先,String 是被 final 修飾的,他的長度是不可變的,就算調用 String 的 concat 方法,那也是把字符串拼接起來並重新創建一個對象,把拼接後的 String 的值賦給新創建的對象,

而 StringBuffer 的長度是可變的,調用StringBuffer 的 append 方法,來改變 StringBuffer 的長度,並且,相比較於 StringBuffer,String 一旦發生長度變化,是非常耗費內存的!


5. 數組類

java.util.Arrays 類能方便地操作數組,它提供的所有方法都是靜態的。

具有以下功能:

  • 給數組賦值:通過 fill 方法。
  • 對數組排序:通過 sort 方法,按升序。
  • 比較數組:通過 equals 方法比較數組中元素值是否相等。
  • 查找數組元素:通過 binarySearch 方法能對排序好的數組進行二分查找法操作。

常用方法:

1   public static int binarySearch(Object[] a, Object key)
用二分查找算法在給定數組中搜索給定值的對象(Byte,Int,double等)。數組在調用前必須排序好的。如果查找值包含在數組中,則返回搜索鍵的索引;否則返回 (-(插入點) - 1)。
2   public static boolean equals(long[] a, long[] a2)
如果兩個指定的 long 型數組彼此相等,則返回 true。如果兩個數組包含相同數量的元素,並且兩個數組中的所有相應元素對都是相等的,則認為這兩個數組是相等的。換句話說,如果兩個數組以相同順序包含相同的元素,則兩個數組是相等的。同樣的方法適用於所有的其他基本數據類型(Byte,short,Int等)。
3   public static void fill(int[] a, int val)
將指定的 int 值分配給指定 int 型數組指定範圍中的每個元素。同樣的方法適用於所有的其他基本數據類型(Byte,short,Int等)。
4   public static void sort(Object[] a)
對指定對象數組根據其元素的自然順序進行升序排列。同樣的方法適用於所有的其他基本數據類型(Byte,short,Int等)。

6. 時間日期

java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個構造函數來實例化 Date 對象。

第一個構造函數使用當前日期和時間來初始化對象。

Date( )

第二個構造函數接收一個參數,該參數是從1970年1月1日起的毫秒數。

Date(long millisec)

6.1 常用Date方法

1   boolean after(Date date)
若當調用此方法的Date對象在指定日期之後返回true,否則返回false。
2   boolean before(Date date)
若當調用此方法的Date對象在指定日期之前返回true,否則返回false。
3   Object clone( )
返回此對象的副本。
4   int compareTo(Date date)
比較當調用此方法的Date對象和指定日期。兩者相等時候返回0。調用對象在指定日期之前則返回負數。調用對象在指定日期之後則返回正數。
5   int compareTo(Object obj)
若obj是Date類型則操作等同於compareTo(Date) 。否則它拋出ClassCastException。
6   boolean equals(Object date)
當調用此方法的Date對象和指定日期相等時候返回true,否則返回false。
7   long getTime( )
返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。
8   int hashCode( )
 返回此對象的哈希碼值。
9   void setTime(long time)
用自1970年1月1日00:00:00 GMT以後time毫秒數設置時間和日期。
10  String toString( )
轉換Date對象為String表示形式,並返回該字符串。

6.2 獲取當前時間

Java中獲取當前日期和時間很簡單,使用 Date 對象的 toString() 方法來打印當前日期和時間

import java.util.Date;

public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 對象
       Date date = new Date();

       // 使用 toString() 函數顯示日期時間
       System.out.println(date.toString());
   }
}

6.3 日期比較

Java使用以下三種方法來比較兩個日期:

  • 使用 getTime() 方法獲取兩個日期(自1970年1月1日經歷的毫秒數值),然後比較這兩個值。
  • 使用方法 before(),after() 和 equals()。例如,一個月的12號比18號早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
  • 使用 compareTo() 方法,它是由 Comparable 接口定義的,Date 類實現了這個接口。

6.4 使用 SimpleDateFormat 格式化日期

SimpleDateFormat 是一個以語言環境敏感的方式來格式化和分析日期的類。SimpleDateFormat 允許你選擇任何用戶自定義日期時間格式來運行

import java.util.*;
import java.text.*;

public class DateDemo {
   public static void main(String args[]) {

      Date dNow = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd ‘at‘ hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

這一行代碼確立了轉換的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是時、分、秒。

註意:有的格式大寫,有的格式小寫,例如 MM 是月份,mm 是分;HH 是 24 小時制,而 hh 是 12 小時制。

6.5 日期和時間的格式化編碼

時間模式字符串用來指定時間格式。在此模式中,所有的 ASCII 字母被保留為模式字母,定義如下:

G   紀元標記    AD
y   四位年份    2001
M   月份  July or 07
d   一個月的日期  10
h    A.M./P.M. (1~12)格式小時   12
H   一天中的小時 (0~23)   22
m   分鐘數 30
s   秒數  55
S   毫秒數 234
E   星期幾 Tuesday
D   一年中的日子  360
F   一個月中第幾周的周幾  2 (second Wed. in July)
w   一年中第幾周  40
W   一個月中第幾周 1
a   A.M./P.M. 標記    PM
k   一天中的小時(1~24)    24
K    A.M./P.M. (0~11)格式小時   10
z   時區  Eastern Standard Time
‘   文字定界符   Delimiter
"   單引號 `

6.6 測量時間

System.currentTimeMillis(); //獲取當前時間戳

import java.util.*;

public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

6.7 Calendar類

我們現在已經能夠格式化並創建一個日期對象了,但是我們如何才能設置和獲取日期數據的特定部分呢,比如說小時,日,或者分鐘? 我們又如何在日期的這些部分加上或者減去值呢? 答案是使用Calendar 類。

Calendar類的功能要比Date類強大很多,而且在實現方式上也比Date類要復雜一些。

Calendar類是一個抽象類,在實際使用時實現特定的子類的對象,創建對象的過程對程序員來說是透明的,只需要使用getInstance方法創建即可。

6.7.1 創建Calendar類對象

  1. 創建一個代表系統當前日期的Calendar對象

    Calendar c = Calendar.getInstance();//默認是當前日期

  2. 創建一個指定日期的Calendar對象

    使用Calendar類代表特定的時間,需要首先創建一個Calendar的對象,然後再設定該對象中的年月日參數來完成。

    //創建一個代表2009年6月12日的Calendar對象
    Calendar c1 = Calendar.getInstance();
    c1.set(2009, 6 - 1, 12);
    

6.7.2 Calendar類對象字段

Calendar類中用一下這些常量表示不同的意義,jdk內的很多類其實都是采用的這種思想

Calendar.YEAR   年份
Calendar.MONTH  月份
Calendar.DATE   日期
Calendar.DAY_OF_MONTH   日期,和上面的字段意義完全相同
Calendar.HOUR   12小時制的小時
Calendar.HOUR_OF_DAY    24小時制的小時
Calendar.MINUTE 分鐘
Calendar.SECOND 秒
Calendar.DAY_OF_WEEK    星期幾

6.7.3 Calendar類對象的獲取

Calendar c1 = Calendar.getInstance();
// 獲得年份
int year = c1.get(Calendar.YEAR);
// 獲得月份
int month = c1.get(Calendar.MONTH) + 1;
// 獲得日期
int date = c1.get(Calendar.DATE);
// 獲得小時
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 獲得分鐘
int minute = c1.get(Calendar.MINUTE);
// 獲得秒
int second = c1.get(Calendar.SECOND);
// 獲得星期幾(註意(這個與Date類是不同的):1代表星期日、2代表星期1、3代表星期二,以此類推)
int day = c1.get(Calendar.DAY_OF_WEEK);

11. Java常用類