1. 程式人生 > >JAVA包裝類和內部類

JAVA包裝類和內部類

包裝類內部類String相關類

一:基本數據類型的包裝類
Java語言針對所有的基本數據類型都提供了對應的包裝類
基本數據類型 包裝類
byte(字節) java.lang.Byte
char(字符) java.lang.Character
short(短整型) java.lang.Short
int(整型) java.lang.Integer
long(長整型) java.lang.Long
float(浮點型) java.lang.Float
double(雙精度) java.lang.Double
boolean(布爾) java.lang.Boolean![]

包裝類和基本類型
基本數據類型轉換為包裝類:Integer intValue = new Integer(21);
包裝類轉換成基本類型:Integer integerId=new Integer(25); int intId=integerId.intValue();
二:字符串相關類

  1. String類
    (1) String代表字符串類型,字符串的內容本身不可改變,字符串存儲於“字符串常量池”中。

    (2)String的兩種實例化方式
    a:直接賦值法:
    eg: String str=“Hello World”;
    b:通過new操作符實例化:
    eg: String str=new String(“Hello World”);
    (3)一個字符串就是一個String類的匿名對象。
    所謂匿名對象,就是在堆內存中開辟了空間,但在棧內存中並沒有引用指向的對象。
    (4)字符串常用方法:
    String類的常用方法:
    1.public String(byte[] bytes)
    使用平臺的默認字符集解碼,將字節數組轉換為字符串
    2.public String(byte[] bytes,Charset charset)
    使用指定字符集解碼,將字節數組轉換為字符串
    3.public char charAt(int index)
    根據索引位置獲取字符串中的某個字符
    4.public boolean contains(CharSequence s)
    判斷當前對象代表的字符串是否包含參數字符串內容
    5.public boolean equals(Object anObject)
    判斷字符串內容是否相同
    6.public byte[] getBytes()
    將字符串轉換為字節數組
    7.public int indexOf(String str)
    返回參數字符串在當前字符串中的索引位置
    9.public int lastIndexOf(String str)
    從後往前找參數字符串,返回參數字符串在當前字符串中的索引位置
    10.public int length()
    返回當前字符串的長度
    11.public String toLowerCase()
    將字符串轉換為小寫
    12.public String toUpperCase()
    將字符串轉換為大寫

  2. StringBuffer類:
    (1)StringBuffer代表可變的字符序列。
    StringBuffer稱為字符串緩沖區,它的工作原理是:預先申請一塊內存,存放字符序列,如果字符序列滿了,會重新改變緩存區的大小,以容納更多的字符序列。
    (2)StringBuffer是可變對象,這個是與String最大的不同(如果連續操作String對象,則會產生大量的“垃圾”,而且“斷開-連接”很頻繁。)

3.StringBuilder類
StringBuilder和StringBuffer功能幾乎是一樣的,只是 StringBuilder是線程不安全的
三:內部類
1.在類的內部定義另一個類。如果在類Outer的內部再定義一個類Inner,此時Inner就稱為內部類,而Outer則稱為外部類。
2.內部類的定義格式
public class 外部類{
外部類成員
public class 內部類{
內部類成員
}
}
3.內部類在編譯完成後也會產生.class文件,而文件名稱則是”外部類名稱$內部類名稱.class”
使用內部類的原因:
比如:心臟屬於人類的某個部分:但心臟不能簡單用屬性或者方法表示一個心臟,因為心臟也有自己的屬性和行為,所以需要寫在人類的內部
好處:
1 可以方便地訪問外部類的私有屬性
2 減少了類文件編譯後的產生的字節碼文件的大小

缺點:使程序結構不清楚
1.成員內部類
成員內部類中不能定義static變量
成員內部類持有外部類的引用
在文件管理方面,成員內部類在編譯完成後也會產生.class文件,而文件名稱則是”外部類名稱$內部類名稱.class”
外部實例化成員內部類的格式:
外部類.內部類 內部類對象=外部類實例.new 內部類();
2.靜態內部類
如果一個內部類使用static聲明,則此內部類就稱為靜態內部類,其實也相當於外部類。可以通過外部類.內部類來訪問。
靜態內部類不會持有外部類的引用,創建時可以不用創建外部類對象
靜態內部類可以訪問外部的靜態變量,如果訪問外部類的非static成員變量必須通過外部類的實例訪問
外部實例化靜態內部類對象的格式:
外部類.內部類 內部類對象= new 外部類.內部類();
3.局域內部類
局域內部類是定義在一個方法中的內嵌類,所以類的作用範圍僅限於該方法中,而類生成的對象也只能在該方法中使用。
局域內部類不能包含靜態成員。
特別註意:
局域內部類要想訪問包含其的方法中的參數,則方法中的參數前必須加上final關鍵字(JDK<=1.7)。
4.匿名內部類
如果一個內部類在整個操作中只使用一次的話,就可以定義為匿名內部類。
沒有名字的內部類,這是java為了方便我們編寫程序而設計的一個機制,因為有時候有的內部類只需要創建一個它的對象就可以了,以後再不會用到這個類,這時候使用匿名內部類就比較合適。

JAVA包裝類和內部類