一、九種基本數據類型的大小以及它們的封裝類面試
在咱們面試或者考試過程當中常常會考到八種基本數據類型以及它們的封裝類,那麼有哪八種基本數據類型呢?它們的封裝類又是什麼呢?對象
首先,八種基本數據類型分別是:int、short、float、double、long、boolean、byte、char;它們的封裝類分別是:Integer、Short、Float、Double、Long、Boolean、Byte、Character。繼承
由於對基本數據類型封裝以後,封裝類有能夠有方法和屬性,而後就能夠利用這些方法和屬性來處理數據,好比Ingeter對象中有parseInt(String s),能夠把字符串轉換爲int類型等。咱們都知道有些類型的數據會有默認值,基本數據類型跟封裝類型的默認值是不同的,好比int i ,若是不賦值i默認爲0;可是Integer j ,若是不賦值,則j 爲null;由於封裝類產生的是對象,而對象默認值爲null。ip
經常使用的方法int intValue()、static Integer valueOf(int i)、String toString()、static Integer parseInt(String s)。內存
tip:String 類型不是基本數據類型,它其實是final修飾,因此也不能夠繼承。字符串
String 類型的變量一般有兩種賦值方式:一種直接賦值,例如String a = "hello world";另外一種是用構造方法,例如 String b = new String ("hello world");那麼這裏的a 和b是否相等呢?他們又有什麼不一樣 呢?get
若是用=做比較,則它們不相等,由於「=」比較的是基本數據類型的值是否相等或者比較對象是否爲同一個對象;而變量a和變量b指向的是兩個不一樣的對象,爲何這麼說呢?先來理解一下2個變量的賦值過程,對於表達式String a = "hello world",會先建立一個字符串對象「hello world」,而這個字符串其實是放在字符串緩衝區中,而後把a指向這個對象;而對於String b = new String("hello world");則會建立兩個對象一個是「hello world」這個放在字符串緩衝區中的,另外一個是new 方法構造出來的對象new String() 這個對象,新對象中保存的是「hello world」對象罷了,這個對象是放在堆內存中,而b 指向這個new String ()對象,這顯然是不一樣的兩個對象,因此他們用 「=」比較的結果爲false。變量
若是用equals()方法比較,這結果爲true,由於equals()方法比較的是對象的內容,它們的內容都爲「hello world」。數據類型
另外值得提醒的是,字符串緩衝區中對相同的字符串只會存一次。假如咱們同時寫了String a ="hello world";String b = new String("hello world");那麼字符串緩衝區實際只有一個hello world 字符串,在給b賦值時,會先檢查字符串緩衝區中是否有「hello world」這個字符串,若是有則不建立,直接new String(),而後賦值,所以這種狀況下,表達式String b= new String ("hello world")也只建立了一個對象。float