java基础之包装类
原文出自http://www.banzg.com/archives/39.html,需要轉載請注明出處。
一、什么是Java的包裝類?
java是一種面向對象語言,java中的類把方法與數據連接在一起,并構成了自包含式的處理單元.但在java中不能定義基本類型(primitive type),為了能將基本類型視為對象來處理,并能連接相關的方法,java為每個基本類型都提供了包裝類。
二、java包裝類常用的幾種類型
Boolean,Byte,Short,Character,Integer,Long,Float,Void
三、包裝類都有共同的方法
帶有基本值參數并創建包裝類對象的構造函數.如可以利用Integer包裝類創建對象,Integer obj=new Integer(145);帶有字符串參數并創建包裝類對象的構造函數.如new Integer(“45”);生成字符串表示法的toString()方法,如obj.toString().對同一個類的兩個對象進行比較的equals()方法,如obj1.eauqls(obj2);生成哈稀表代碼的hashCode方法,如obj.hasCode();將字符串轉換為基本值的 parseType方法,如Integer.parseInt(args[0]);可生成對象基本值的typeValue方法,如obj.intValue();四、包裝類的自動裝箱、自動拆箱
首先,什么是裝箱與拆箱?最簡單的解釋就是把最簡單的數據類型用他們相對應的引用類型包裝起來,使他們具有對象的特性。例如基本類型int,它所對應的包裝類就是Integer。裝箱與拆箱就是int與Integer之間的轉換。
為了使我們的操作更加簡單,jdk1.5版本給我們提供了自動拆箱與自動裝箱的功能。例如:
inti = 25; Integer j = i;//自動裝箱 intm = j;//自動拆箱注意:對于Integer的拆裝箱需要注意以下問題
publicclassDemo { publicstaticvoid main(String[] args) { Integer a = 100; Integer b = 100; Integer c = 200; Integer d = 200; System.out.println(a==b); System.out.println(a==100); System.out.println(c==d); System.out.println(c==200); } }運行一下,結果依次為true,true,false,true
 對于a100,b200大家應該可以理解,作了拆裝箱,這里比較的是他們的值。但是a等于b為什么c就不等于d了?這就需要我們分析一下了
 當Integer a = 100;這條語句執行的時候,java自動把它翻譯成Integer a = Integer.valueOf(100);我們就來看一下valueOf這個函數:
這里看一下,當參數i是屬于整型范圍以內的就返回IntegerCache.cache[i]。對于IntegerCache的cache[],我們注意到static {}里面對它進行了初始化。new了所有的整型對象出來,而static{}只初始化一次,并且在對象間共享。因此,valueOf函數返回的是一開始就初始化好了的對象的引用。所以a和b都是同一個引用,因此它們相等。當然了,當參數大于127的時候,都是返回的新建對象,因此它們的引用并不等。所以說,對于Integer有特殊的地方,就是它使用了數組的緩存,目的是為了提高運行效率。
總結
以上是生活随笔為你收集整理的java基础之包装类的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java基础集合类之set
- 下一篇: freemaker介绍及常见的用法解析
