1、Java的包裝類
基本數據類型我們都很熟悉,例如:int、float、double、boolean、char等,基本數據類型不具備對象的特征,不能調用方法,一般能實現的功能比較簡單,為了讓基本數據類型也具備對象的特性,Java為每個數據類型都提供了一個包裝類,這樣我們就可以像操作對象一樣,操作這些基本數據類型了
常見的包裝類和基本類型對應關系如下:

包裝類主要提供了兩類方法:
1、進行多個類型之間的轉換
2、將字符串和本類型及包裝類相互轉換
比如下面代碼:
1 int i = 2;
2 Integer m = new Integer(5);
3 Integer n = new Integer("8");
第一行是用基本類型定義了整型變量i,第二行是利用int包裝類定義了int對象m,雖然賦值為整型的5,但是現在會將基本類型轉換為包裝類中的5
第三行初始化值為字符串類型的"8",但是會被包裝類轉換成整數類型,這就是包裝類的基本使用方法
每個包裝類都可以和其他類進行轉換,比如Integer包裝類,轉換的對應關系如下:

根據轉換的對應關系,可以寫一個簡單的實例如下:
1 public class HelloWorld {
2 public static void main(String[] args) {
3
4 int score1 = 86;
5
6 // 創建Integer包裝類對象,表示變量score1的值
7 Integer score2=new Integer(score1);
8
9 // 將Integer包裝類轉換為double類型
10 double score3=score2.doubleValue();
11
12 // 將Integer包裝類轉換為float類型
13 float score4=score2.floatValue();
14
15 // 將Integer包裝類轉換為int類型
16 int score5 =score2.intValue();
17
18 System.out.println("Integer包裝類:" + score2);
19 System.out.println("double類型:" + score3);
20 System.out.println("float類型:" + score4);
21 System.out.println("int類型:" + score5);
22 }
23 }
通過這個簡單的包裝類轉換程序,可以看出包裝類轉換為各種基本數據類型也是很方便的
那么基本類型怎么轉換為包裝類的對象呢?其實前面三行代碼已經體現了,只不過不太完全,基本類型轉換為包裝類可以理解為一個裝箱的過程,裝箱有兩種方式:手動裝箱和自動裝箱,那么同理包裝類轉換為基本類型叫做拆箱,同樣分為:手動拆箱和自動拆箱,上面的例子就是一個手動拆箱的例子,
那么其中自動裝箱和自動拆箱,都是編譯器根據數據類型自動完成了轉換,簡單的代碼如下:
1 public class HelloWorld {
2 public static void main(String[] args) {
3 double a = 91.5;
4
5 // double類型手動裝箱
6 Double b = new Double(a);
7
8 // double類型自動裝箱
9 Double c = a;
10
11 System.out.println("裝箱后的結果為:" + b + "和" + c);
12
13 Double d = new Double(87.0);
14
15 // Double包裝類對象手動拆箱
16 double e = d.doubleValue();
17
18 //Double包裝類對象自動拆箱
19 double f = d;
20
21 System.out.println("拆箱后的結果為:" + e + "和" + f);
22 }
23 }
例子很簡單,對每一個數據類型分別完成了自動和手動兩個操作,所以b和c的值是一樣的,e和f的值是一樣的
除了基本數據類型的包裝轉換之外,基本類型和字符串之間也可以進行轉換
比如一個基本類型:int a = 30;有3中方式轉換為字符串對象:
1、使用包裝類的toString方法,String str1 = Integer.toString(a);
2、使用String類的valueOf方法,String str2 = String.valueOf(a);
3、用一個空字符串加上基本類型,系統會將基本類型轉換為字符串類型,String str3 = a + "";
反過來,定義:String str = "18";將一個字符串類型轉換為基本類型有以下兩種方法:
1、調用包裝類的parseXxx靜態方法,int b = Integer.parseInt(str);
2、調用包裝類的valueOf方法,完成自動拆箱,int c = Integer.valueOf(str);
其他類型轉換也是一樣,替換里面的類型即可,下面是一個簡單的例子:
1 public class HelloWorld {
2 public static void main(String[] args) {
3
4 double m = 78.5;
5 //將基本類型轉換為字符串
6 String str1 = Double.toString(m);
7
8 System.out.println("m 轉換為String型后與整數20的求和結果為: "+(str1+20));
9
10 String str = "180.20";
11 // 將字符串轉換為基本類型
12 Double a = Double.valueOf(str);
13
14 System.out.println("str 轉換為double型后與整數20的求和結果為: "+(a+20));
15 }
16 }
這個例子實現了兩次轉換,所以str1+20應該輸出:78.520,a+20應該輸出:200.20,前者結果是字符串類型,后者結果是基本的浮點數類型
2、Java日期時間處理
程序開發中,時間處理必不可少,這些內容相對簡單一些,會使用一些固定的類即可
首先,我們可以使用java.util包中的Date類來獲取時間,方法如下:
1 Date d = new Date(); 2 System.out.println(d);
這樣是最簡單的方法了,但是輸出格式可能不太適合我們:Mon Sep 21 21:46:13 CST 2015
所以我們需要進行簡單的修飾,那么這時需要java.text包中的SimpleDateFormat類中的format方法對文本進行格式化,代碼如下:
1 Date d = new Date();
2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
3 String today = sdf.format(d);
4 System.out.println(today);
這樣就輸出了我們常用的時間:2015-09-21 21:51:39,另外格式我們也可以按照我們的需要定義
反過來呢,我們還可以把文本變成默認的時間格式,這用到了SimpleDateFormat類中的parse方法,但是這個方法可能會出現異常,所以需要java.text中的異常類ParseException類進行異常處理,看一個小實例:
1 import java.text.ParseException;
2 import java.text.SimpleDateFormat;
3 import java.util.Date;
4
5 public class HelloWorld {
6
7 public static void main(String[] args) throws ParseException {
8
9 // 使用format()方法將日期轉換為指定格式的文本
10 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
11 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
12 SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
13
14 // 創建Date對象,表示當前時間
15 Date now = new Date();
16
17 // 調用format()方法,將日期轉換為字符串並輸出
18 System.out.println(sdf1.format(now));
19 System.out.println(sdf2.format(now));
20 System.out.println(sdf3.format(now));
21
22 // 使用parse()方法將文本轉換為日期
23 String d = "2015-9-21 21:56:36";
24 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
25
26 // 調用parse()方法,將字符串轉換為日期
27 Date date = sdf.parse(d);
28
29 System.out.println(date);
30 }
31 }
例子很簡單,實現了時間格式化,文本到日期的轉換
另外在java.util包中還有一個時間處理的Calendar類,因為Date類中的本身的設計方法,遭到了眾多批評,所以推薦使用Calendar類來處理時間,Calendar類是一個抽象類,可以通過調用getInstance靜態方法獲得Calendar的一個對象,此對象默認由當前時間進行初始化,直接來一個簡單的實例:
1 package com.imooc.collection;
2
3 import java.util.Calendar;
4
5 public class DateAction {
6
7 public static void main(String[] args) {
8 Calendar c = Calendar.getInstance(); //實例化Calendar對象
9 int year = c.get(Calendar.YEAR); //通過get方法獲得當前年
10 int month = c.get(Calendar.MONTH) + 1; //月份0-11,需要加1
11 int day = c.get(Calendar.DAY_OF_MONTH); //日期
12 int hour = c.get(Calendar.HOUR_OF_DAY); //獲取小時
13 int minute = c.get(Calendar.MINUTE); //獲取分鍾
14 int second = c.get(Calendar.SECOND); //獲取秒數
15 System.out.println("當前時間:" + year + "年" + month + "月" + day + "日" + " " + hour +
16 ":" + minute + ":" + second);
17 }
18
19 }
這樣就打印出結果了:當前時間:2015年9月21日 22:12:13
Calendar還提供了getTime方法,用來獲取Date對象,實現Calendar和Date對象的互轉,還可以用getTimeInMillis獲得1970年01月01日0時0分0秒,到當前時間的毫秒數,大約是Unix時間戳的1000倍
簡單代碼如下:
1 Date date = c.getTime(); //對象轉換
2 Long time = c.getTimeInMillis(); //獲取至現在的毫秒數
3 System.out.println("當前時間:" + date);
4 System.out.println("當前毫秒數:" + time);
這樣就實現了轉換
3、Java數學運算Math類
Math類也是Java中做運算常用的類,在java.lang包中,這個系統會自動導入,這里簡單的記錄一下,常用的方法:

直接看一個簡單的實例:
1 public class MathAction {
2
3 public static void main(String[] args) {
4 double a = 12.86;
5 int b = (int) a; //強制類型轉換
6 System.out.println("強制類型轉換:" + b);
7 long c = Math.round(a); //四舍五入
8 System.out.println("四舍五入:" + c);
9 double d = Math.floor(a); //返回小於參數a的最大整數
10 System.out.println("小於a的最大整數:" + d);
11 double e = Math.ceil(a); //返回大於參數a的最小整數
12 System.out.println("大於a的最小整數:" + e);
13 double x = Math.random(); //產生[0,1)區間內的隨機浮點數
14 System.out.println("默認隨機數:" + x);
15 int y = (int) (Math.random()*99); //產生[0,99)區間內的隨機整數
16 System.out.println("0-99之間的隨機整數(不包括99):" + y);
17
18 }
19
20 }
很容易理解的例子,效果如下:

以上就是Java開發中經常用到的類和方法,以上主要就是包裝類、時間處理、數學計算這些

