Java常用類
包裝類
由于Java語言中的基本型別不是面向物件,并不具備物件的性質,實際使用存在很多不便,Java在java.lang包中提供了八種基本型別對應的包裝類,可以方便地將它們轉化為物件進行處理,并且可以呼叫一些方法,Java中基本型別和包裝類的對應關系如下表所示:
| 基本資料型別名稱 | 包裝類名稱 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
從JDK1.5版本開始,引入了自動裝箱和自動拆箱的 概念,裝箱指的是將基本型別的值轉換成包裝類物件,拆包指的是將包裝類物件轉換成基本型別的值,自動裝箱和拆箱在Java中很常見,在賦值或者方法呼叫時都有可能發生,、
裝箱與拆箱基本操作代碼如下:
package com.Cuc.demo01;
/**
* 裝箱與拆箱
* @author ZpF
*/
public class BoxingAndUnBoxing {
public static void main(String[] args) {
Integer x=new Integer(10);//手動裝箱
Integer y=11;//自動裝箱
int m=x.intValue();//手動拆箱
int n=y;//自動拆箱
System.out.println(m);
System.out.println(n);
}
}
自動裝箱和拆箱雖然能使代碼變的簡潔但也存在一些問題,通過以下代碼進行說明,
package com.Cuc.demo01;
/**
* 自動裝箱中的一個陷阱
* @author ZpF
*/
public class BoxingAndUnBoxing {
public static void main(String[] args) {
/**
* Java會快取-128-127的數值,在范圍內會復用這個物件(記憶體分配是同一個地址)
*/
Integer i1=10;
Integer i2=10;
System.out.println(i1==i2);//true i1和i2都指向記憶體中同一地址,所以為同一物件
System.out.println(i1.equals(i2));//true
/**
* Java會快取-128-127的數值,超過這一范圍會重新創建一個物件
*/
Integer i3=210;
Integer i4=210;
System.out.println(i3==i4);//false
System.out.println(i3.equals(i4));//true
}
}
包裝類中的常量
每一種包裝類都提供了一些常量,比較典型的常量有如下所示:
| 名稱 | 說明 |
|---|---|
| MAX_VALUE | 最大值 |
| MIN_VALUE | 最小值 |
| SIZE | 以二進制補碼的形式所占的位數 |
| BYTES | 以二進制補碼形式所占的位元組數 |
| TYPE | **型別的class物件 |
每一種不同的包裝類提供不同的常量,以上只是舉例其中部分進行說明,真正用到時還要具體分析,
包裝類的構造方法
Integer類、Double類、Boolean類提供了兩種構造方法,
- 以基本資料型別的值為入參創建物件,
- 以String字串為入參創建物件,
示例代碼如下:
package com.Cuc.demo01;
/**
* 包裝類的構造方法
*/
public class Consructor {
public static void main(String[] args) {
Integer i1=new Integer(10);
Integer i2=new Integer("10");
Double i3=new Double(20.1);
Double i4=new Double("20.1");
Boolean i5=new Boolean(true);
Boolean i6=new Boolean("false");
}
}
Character類只提供了一種構造方法,以char字符為創建一個Character類物件,
package com.Cuc.demo01;
/**
* Character包裝類的構造方法
*/
public class Consructor {
public static void main(String[] args) {
Character i7=new Character('帥');
}
}
包裝類中的常用方法
每一種包裝類都提供了許多常用方法,在具體需要時查閱相關資料選擇合適的方法,
Math類
Java中提供了Math類來處理復雜的數學運算,如平方根、對數、三角函式、指數等,Math類中還提供了一些常用的數學常量,如PI、E等,Math類中的方法都被定義為static靜態方法,直接使用Math.method格式呼叫(method代表方法名),Math類沒有構造方法,也就是說Math類不能實體化物件,因為數學本身就是抽象的,沒有具體實體化物件,Math類是java.lang基礎包中提供的,
列舉
列舉型別在編程語言中很常見,它是在JDK1.5版本引入的特性,是一種特殊的資料型別,列舉型別將一系列含義相同、預先定義好的常量組合起來,其中每個常量都各自有定義好的相同型別的值,
列舉定義
Java中列舉型別的定義格式如下:
public enum [列舉類名]{
[列舉值代碼塊]
}
因為列舉和Class類一樣,都是需要被外部訪問的,所以權限修飾符都是public;enum為列舉型別的關鍵字;列舉類的名稱與Class定義相同,一般為首字母大寫,因為表示的是常量,所以列舉型別的欄位一般為全大寫字母,“[列舉代碼塊]”中定義了每個列舉值的名稱和內容,
下面是一個關于顏色列舉的定義的示例:
package com.Cuc.demo01;
/**
* 列舉值定義
* @author ZpF
*/
public enum ColorEnum {
RED,GREEN,YELLOW,BLUE;
}
使用列舉值可以直接通過“列舉類名.列舉值名”的方式來訪問,
列舉的常見方法
列舉型別的物件繼承java.lang.Enum類,列舉型別中的常見方法如下所示:
| 方法 | 功能描述 |
|---|---|
| values() | 將列舉型別成員屬性按陣列形式回傳 |
| valueOf() | 將普通字符轉換為列舉物件 |
| compareTo() | 比較兩個列舉物件在定義時的前后順序 |
| ordinal() | 獲取列舉成員的索引位置 |
代碼示例:
package com.Cuc.demo01;
/**
* enum使用
* @author ZpF
*/
public class UseNum {
public static void main(String[] args) {
ColorEnum colorArray[]=ColorEnum.values();
for (int i = 0; i < colorArray.length; i++) {
System.out.println("依次列印列舉型別成員"+colorArray[i]);
}
System.out.println("RED和GREEN的比較結果為:"+ColorEnum.RED.compareTo(ColorEnum.GREEN));
for (int i = 0; i < colorArray.length; i++) {
System.out.println("依次獲取列舉型別成員索引位置:"+colorArray[i].ordinal());
}
}
}
運行結果:

列舉型別中也可以添加自定義的構造方法,但是構造方法必須是私有的,被關鍵字private修飾,
package com.Cuc.demo01;
/**
* 列舉值定義
* @author ZpF
*/
public enum ColorEnum {
RED("紅色"),GREEN("綠色"),YELLOW("黃色"),BLUE("藍色");
public String color;
private ColorEnum() {
}
private ColorEnum(String color) {
this.color = color;
}
}
package com.Cuc.demo01;
/**
* enum使用
* @author ZpF
*/
public class UseNum {
public static void main(String[] args) {
ColorEnum colorArray[]=ColorEnum.values();
for (int i = 0; i < colorArray.length; i++) {
System.out.println("依次列印列舉型別成員:"+colorArray[i].color);
}
}
}
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/290865.html
標籤:java
