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開發中經常用到的類和方法,以上主要就是包裝類、時間處理、數學計算這些