1. 程式人生 > >java常用類(1)

java常用類(1)

final class als parseint sta 不可變對象 public 包裝 pri

一:基本數據類型的包裝類

java是面向對象的語言,但並不是“純面向對象”的,如基本數據類型就不是對象。但我們在實際應用中將基本數據轉化成對象,便於操作。如:將數據類型存儲到Object[]數組或集合中的操作等等。

為了解決不足,java在設計類時為每個基本數據類型設計了一個對應的類進行代表,這樣八個和基本數據類型對應的統稱為包裝類(Wrapper Class)。

包裝類均位於java.long報包,八種包裝類和基本數據類型的對應關系如下:

技術分享圖片

Integer的使用示例(其它類型的使用類似):

package cn.tanjianjie.test;
/**
*測試包裝類
* Integer的使用
*/
public class TestWrapperClass {
public static void main(String[] args){
//基本數據類型轉成包裝類對像
Integer a=new Integer(3);//繼承抽象類numbered類,numbered類包括所有的數據類型
Integer b=Integer.valueOf(30);//官方寫法

//把包裝類對像轉成基本數據類型
int c=b.intValue();
double d=b.doubleValue();

//把字符串轉成包裝類對象
Integer e=new Integer("3333");
Integer f=Integer.parseInt("33333333");

//把包裝類對象轉成字符串
String str=f.toString();//""+f

//常見常量
System.out.println("int類型最大的整數");
}
}

二:自動裝箱和自動拆箱

自動裝箱和拆箱就是將基本數據類型和包裝類之間進行自動的相互轉換。

自動裝箱:

基本數據類型處於需要對象的環境中時,會自動轉為“對象”。如通過自動裝箱,不用通過Integer i=new Integer(5);這樣的語句來實現基本數據類型轉換成包裝類的過程,而可以直接用Imteger i=5;這樣的語句就能實現基本數據類型轉換成包裝類,因為JVM微我們執行Integer i=new Integer.valueOf(5)這樣的操作,這就是java的自動裝箱。

自動拆箱:

每當需要一個值時,對象會自動轉成基本數據類型,沒必要去顯示調用intValue()、doubleValue()等轉型方法。如Integer i=5;int j=i;這樣的過程就是自動拆箱。

總之:自動裝箱過程是通過調用包裝類的valueOf()方法實現的,而自動拆箱過程是通過調用包裝類的xxxValue()方法實現的[xxx]代表對應的基本數據類型,如intValue(),doubleValue()等。示例:

package cn.tanjianjie.test;
/**
*測試自動裝箱、自動拆箱
*/
public class TestAutoBox{
public static void main(String[] args){
Integer a=234;//自動裝箱
int b=a;//自動拆箱

//緩存[-128,127]之間的數字
Integer in1=-128;
Integer in2=-128;
System.out.println(in1==in2);//true因為-128在緩沖範圍內
System.out.println(in1.equals(in2));//true

Integer in3=1234;
Integer in4=1234;
System.out.println(in3==in4);//false因為1234不在緩沖範圍內
System.out.println(in3.equals(in4));//false
}
}

運行結果:

技術分享圖片

String類:

String類對象代表不可變的Unicode字符序列,所以稱String對象為“不可變對象”(因為其核心數組有final修飾)。對象的內部的成員變量的值無法再改變。字符串進行比較時用equals,不使用==。

StringBuilder與StringBuffer區別(可變字符序列):

StringBuilder線程還能不安全,效率高。

StringBuffer線程安全,效率低(常用)。

示例:

package cn.tanjianjie.test;
/**
* 測試StringBuilder可變字符序列
*/
public class TestSttringBuilder {
public static void main(String[] args){
StringBuilder sb=new StringBuilder("abcd");
System.out.println(Integer.toHexString(sb.hashCode()));//獲取地址
System.out.println(sb);

sb.setCharAt(2,‘e‘);
System.out.println(Integer.toHexString(sb.hashCode()));//獲取地址
System.out.println(sb);
}
}
運行結果:

技術分享圖片

StringBuilder與StringBuffer的常用方法:

倒序:Object.reverse();

改變特定位置的字符:Object.setChat(x,String);x代表位置,Stirng代表字符用單引號。

插入:Object.insert(x,String);

刪除:Object.delect(x,String);

更多方法見java幫助文檔。

註意可變序列與不可變序列的陷阱:

如:

技術分享圖片

這樣的程序浪費空間與時間。

應用如下所示進行替換:

技術分享圖片


java常用類(1)