1、Java 中的包裝類
相信各位小伙伴們對(duì)基本數(shù)據(jù)類型都非常熟悉,例如 int、float、double、boolean、char 等?;緮?shù)據(jù)類型是不具備對(duì)象的特性的,比如基本類型不能調(diào)用方法、功能簡單。。。,為了讓基本數(shù)據(jù)類型也具備對(duì)象的特性, Java 為每個(gè)基本數(shù)據(jù)類型都提供了一個(gè)包裝類,這樣我們就可以像操作對(duì)象那樣來操作基本數(shù)據(jù)類型。
基本類型和包裝類之間的對(duì)應(yīng)關(guān)系:
| 基本類型 | 對(duì)應(yīng)的包裝類 |
|---|---|
| byte | Byte |
| short | Short |
| int | Interger |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
包裝類主要提供了兩大類方法:
將本類型和其他基本類型進(jìn)行轉(zhuǎn)換的方法
將字符串和本類型及包裝類互相轉(zhuǎn)換的方法
我們將在后面的小節(jié)逐步講解,表著急哦~~
public class HelloWorld {
public static void main(String[] args) {
// 定義int類型變量,值為86
int score1 = 86;
// 創(chuàng)建Integer包裝類對(duì)象,表示變量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 為例(其他幾個(gè)包裝類的操作雷同哦):
Integer a=new Tnterger(3);//定義Interger包裝類對(duì)象,值為3
int b=a+5;//將對(duì)象和基本類型進(jìn)行運(yùn)算
在 JDK1.5 引入自動(dòng)裝箱和拆箱的機(jī)制后,包裝類和基本類型之間的轉(zhuǎn)換就更加輕松便利了。
那什么是裝箱和拆箱呢?我們分別來看下
裝箱:把基本類型轉(zhuǎn)換成包裝類,使其具有對(duì)象的性質(zhì),又可分為手動(dòng)裝箱和自動(dòng)裝箱
int i=10;//定義一個(gè)int基本類型值
Integer x=new Integer(i);//手動(dòng)裝箱
Integer y =i;//自動(dòng)裝箱
拆箱:和裝箱相反,把包裝類對(duì)象轉(zhuǎn)換成基本類型的值,又可分為手動(dòng)拆箱和自動(dòng)拆箱
Integer j=new Integer(8);//定義一個(gè)Integer包裝類對(duì)象,值為8
int m=j.intValue();//手動(dòng)拆箱為int類型
int n=j;//自動(dòng)拆箱為int類型
public class HelloWorld {
public static void main(String[] args) {
// 定義double類型變?cè)?JDK1.5 引入自動(dòng)裝箱和拆箱的機(jī)制后,包裝類和基本類型之間的轉(zhuǎn)換就更加輕松便利了。
那什么是裝箱和拆箱呢?我們分別來看下
裝箱:把基本類型轉(zhuǎn)換成包裝類,使其具有對(duì)象的性質(zhì),又可分為手動(dòng)裝箱和自動(dòng)裝箱量
double a = 91.5;
// 手動(dòng)裝箱
Double b = new Double(a);
// 自動(dòng)裝箱
Double c =a;
System.out.println("裝箱后的結(jié)果為:" + b + "和" + c);
// 定義一個(gè)Double包裝類對(duì)象,值為8
Double d = new Double(87.0);
// 手動(dòng)拆箱
double e = d.doubleValue();
// 自動(dòng)拆箱
double f =d ;
System.out.println("拆箱后的結(jié)果為:" + e + "和" + f);
}
}
3、Java 中基本類型和字符串之間的轉(zhuǎn)換
在程序開發(fā)中,我們經(jīng)常需要在基本數(shù)據(jù)類型和字符串之間進(jìn)行轉(zhuǎn)換。
其中,基本類型轉(zhuǎn)換為字符串有三種方法:
1、 使用包裝類的 toString() 方法
2、使用String類的 valueOf() 方法
3、 用一個(gè)空字符串加上基本類型,得到的就是基本類型數(shù)據(jù)對(duì)應(yīng)的字符串
//將基本類型轉(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)換為基本類型的包裝類,會(huì)自動(dòng)拆箱
//將字符串轉(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 類表示時(shí)間
在程序開發(fā)中,經(jīng)常需要處理日期和時(shí)間的相關(guān)數(shù)據(jù),此時(shí)我們可以使用 java.util 包中的 Date 類。這個(gè)類最主要的作用就是獲取當(dāng)前時(shí)間,我們來看下 Date 類的使用:
Date d=new Date();//使用默認(rèn)的構(gòu)造方法創(chuàng)建Date對(duì)象
System.out.println(d);//輸出Date對(duì)象
使用 Date 類的默認(rèn)無參構(gòu)造方法創(chuàng)建出的對(duì)象就代表當(dāng)前時(shí)間,我們可以直接輸出 Date 對(duì)象顯示當(dāng)前的時(shí)間,顯示的結(jié)果如下:
Wed Jun 11 09:22:30 CST 2014
其中, Wed 代表 Wednesday (星期三), Jun 代表 June (六月), 11 代表 11 號(hào), CST 代表 China Standard Time (中國標(biāo)準(zhǔn)時(shí)間,也就是北京時(shí)間,東八區(qū))。
從上面的輸出結(jié)果中,我們發(fā)現(xiàn),默認(rèn)的時(shí)間格式不是很友好,與我們?nèi)粘?吹降娜掌诟袷讲惶粯樱绻胍粗付ǖ母袷竭M(jìn)行顯示,如 2014-06-11 09:22:30 ,那該怎么做呢?
此時(shí)就到了 java.text 包中的 SimpleDateFormat 類大顯身手的時(shí)候了!!可以使用 SimpleDateFormat 來對(duì)日期時(shí)間進(jìn)行格式化,如可以將日期轉(zhuǎn)換為指定格式的文本,也可將文本轉(zhuǎn)換為日期。
-
使用 format() 方法將日期轉(zhuǎn)換為指定格式的文本
//創(chuàng)建Date對(duì)象,表示當(dāng)前時(shí)間 Date d=new Date(); //創(chuàng)建SimpleDateFormat對(duì)象,指定目標(biāo)格式 SipleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //調(diào)用format()方法,格式化時(shí)間,轉(zhuǎn)換為指定格式字符串 String today=sdf.format(d); //輸出轉(zhuǎn)換后的字符串 System.out.println(today);
代碼中的 “yyyy-MM-dd HH:mm:ss” 為預(yù)定義字符串, yyyy 表示四位年, MM 表示兩位月份, dd 表示兩位日期, HH 表示小時(shí)(使用24小時(shí)制), mm 表示分鐘, ss 表示秒,這樣就指定了轉(zhuǎn)換的目標(biāo)格式,最后調(diào)用 **format() 方法將時(shí)間轉(zhuǎn)換為指定的格式的字符串。
運(yùn)行結(jié)果: 2014-06-11 09:55:48 **
- 使用 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)換后的時(shí)間
System.out.println("當(dāng)前時(shí)間:"+date);
代碼中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式,調(diào)用 **parse() **方法將文本轉(zhuǎn)換為日期。
運(yùn)行結(jié)果:
當(dāng)前時(shí)間:Fri Feb 14 10:30:25 CST 2014
一定要注意哦:
1、 調(diào)用 SimpleDateFormat 對(duì)象的 parse() 方法時(shí)可能會(huì)出現(xiàn)轉(zhuǎn)換異常,即 ParseException ,因此需要進(jìn)行異常處理
2、 使用 Date 類時(shí)需要導(dǎo)入 java.util 包,使用 SimpleDateFormat 時(shí)需要導(dǎo)入 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時(shí)mm分ss秒");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 創(chuàng)建Date對(duì)象,表示當(dāng)前時(shí)間
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 類的應(yīng)用
Date 類最主要的作用就是獲得當(dāng)前時(shí)間,同時(shí)這個(gè)類里面也具有設(shè)置時(shí)間以及一些其他的功能,但是由于本身設(shè)計(jì)的問題,這些方法卻遭到眾多批評(píng),不建議使用,更推薦使用 Calendar 類進(jìn)行時(shí)間和日期的處理。
java.util.Calendar 類是一個(gè)抽象類,可以通過調(diào)用 getInstance()** **靜態(tài)方法獲取一個(gè) Calendar 對(duì)象,此對(duì)象已由當(dāng)前日期時(shí)間初始化,即默認(rèn)代表當(dāng)前時(shí)間,如 Calendar c = Calendar.getInstance();
那么如何使用 Calendar 獲取年、月、日、時(shí)間等信息呢?我們來看下面的代碼:
Calendar c=Calendar,getInstance();//創(chuàng)建Calendar對(duì)象
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);//獲取小時(shí)
int minute=c.get(Calendar.MINUTE);//獲取分鐘
int second=c.get(Calendar.SECOND);//獲取秒
System.out.println("當(dāng)前時(shí)間:"+year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);
其中,調(diào)用 Calendar 類的 getInstance() 方法獲取一個(gè)實(shí)例,然后通過調(diào)用 get() 方法獲取日期時(shí)間信息,參數(shù)為需要獲得的字段的值, Calendar.Year 等為 Calendar 類中定義的靜態(tài)常量。
運(yùn)行結(jié)果:
當(dāng)前時(shí)間:2014-6-11 11:13:50
Calendar 類提供了 getTime() 方法,用來獲取 Date 對(duì)象,完成 Calendar 和 Date 的轉(zhuǎn)換,還可通過 getTimeInMillis() 方法,獲取此 Calendar 的時(shí)間值,以毫秒為單位。如下所示:
Date date=c.getTime();//將Canlendar對(duì)象轉(zhuǎn)換為Date對(duì)象
Long time=c.getTimeInMillis();//獲取當(dāng)前毫秒數(shù)
System.out.println("當(dāng)前時(shí)間:"+date);
System.out.println("當(dāng)前毫秒數(shù):"+time);
運(yùn)行結(jié)果:
當(dāng)前時(shí)間:Wed Jun 11 11:26:59 CST 2014
當(dāng)前毫秒數(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對(duì)象
Calendar c = Calendar.getInstance();
// 將Calendar對(duì)象轉(zhuǎn)換為Date對(duì)象
Date date = c.getTime();
// 創(chuàng)建SimpleDateFormat對(duì)象,指定目標(biāo)格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 將日期轉(zhuǎn)換為指定格式的字符串
String now = sdf.format(date);
System.out.println("當(dāng)前時(shí)間:" + now);
}
}
6、使用 Math 類操作數(shù)據(jù)
Math 類位于 java.lang 包中,包含用于執(zhí)行基本數(shù)學(xué)運(yùn)算的方法, Math 類的所有方法都是靜態(tài)方法,所以使用該類中的方法時(shí),可以直接使用類名.方法名,如: Math.round();
常用的方法:
| 返回值 | 方法名 | 解釋 |
|---|---|---|
| long | round() | 返回四舍五入后的整數(shù) |
| double | floor() | 返回小于參數(shù)的最大整數(shù) |
| double | ccell() | 返回大于參數(shù)的最大整數(shù) |
| double | random() | 返回[0,1)之間的隨機(jī)數(shù)浮點(diǎn)數(shù) |
double a=12.81;//定義一個(gè)double類型變量
int b=(int)a;//將double類型強(qiáng)制轉(zhuǎn)換為int類型,去掉小數(shù)位
System.out.println("強(qiáng)制類型轉(zhuǎn)換:"+b);
long c=Math.round(a);//調(diào)用round方法,進(jìn)行四舍五入
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)之間的隨機(jī)浮點(diǎn)數(shù)
System.out.println("隨機(jī)數(shù):"+x);
int y=(int)(Math.random()*99);//調(diào)用random方法,產(chǎn)生[0,99)之間的隨機(jī)z整數(shù)
System.out.println("產(chǎn)生[0,99)之間的隨機(jī)整數(shù):"+y);
運(yùn)行結(jié)果:
強(qiáng)制類型轉(zhuǎn)換:12
四舍五入:13
floor:12.0
ceil:13.0
隨機(jī)數(shù):0.42585849456602687
產(chǎn)生[0,99)之間的隨機(jī)整數(shù):30
public class HelloWorld {
public static void main(String[] args) {
// 定義一個(gè)整型數(shù)組,長度為10
int[] nums =new int[10]
//通過循環(huán)給數(shù)組賦值
for (int i = 0; i < nums.length; i++) {
// 產(chǎn)生10以內(nèi)的隨機(jī)數(shù)
int x = Math.random();
nums[i] = x;// 為元素賦值
}
// 使用foreach循環(huán)輸出數(shù)組中的元素
for (int i = 0; i < nums.length; i++) {
System.out.print(num + " ");
}
}
}