java string封装类_java中八种基本数据类型以及它们的封装类,String类型的一些理解...
在我們面試或者考試過程中經(jīng)常會(huì)考到八種基本數(shù)據(jù)類型以及它們的封裝類,那么有哪八種基本數(shù)據(jù)類型呢?它們的封裝類又是什么呢?
首先,八種基本數(shù)據(jù)類型分別是:int、short、float、double、long、boolean、byte、char;它們的封裝類分別是:Integer、Short、Float、Double、Long、Boolean、Byte、Character。
因?yàn)閷?duì)基本數(shù)據(jù)類型封裝之后,封裝類有可以有方法和屬性,然后就可以利用這些方法和屬性來處理數(shù)據(jù),比如Ingeter對(duì)象中有parseInt(String s),可以把字符串轉(zhuǎn)換為int類型等。我們都知道有些類型的數(shù)據(jù)會(huì)有默認(rèn)值,基本數(shù)據(jù)類型跟封裝類型的默認(rèn)值是不一樣的,比如int i? ,如果不賦值i默認(rèn)為0;但是Integer j ,如果不賦值,則j 為null;因?yàn)榉庋b類產(chǎn)生的是對(duì)象,而對(duì)象默認(rèn)值為null。
tip:String 類型不是基本數(shù)據(jù)類型,它實(shí)際上是final修飾,所以也不可以繼承。
String 類型的變量通常有兩種賦值方式:一種直接賦值,例如String a = "hello world";另一種是用構(gòu)造方法,例如 String b = new String ("hello world");那么這里的a 和b是否相等呢?他們又有什么不同 呢?
如果用=作比較,則它們不相等,因?yàn)椤?#61;”比較的是基本數(shù)據(jù)類型的值是否相等或者比較對(duì)象是否為同一個(gè)對(duì)象;而變量a和變量b指向的是兩個(gè)不同的對(duì)象,為什么這么說呢?先來理解一下2個(gè)變量的賦值過程,對(duì)于表達(dá)式String a = "hello world",會(huì)先創(chuàng)建一個(gè)字符串對(duì)象“hello world”,而這個(gè)字符串實(shí)際上是放在字符串緩沖區(qū)中,然后把a(bǔ)指向這個(gè)對(duì)象;而對(duì)于String b = new String("hello world");則會(huì)創(chuàng)建兩個(gè)對(duì)象一個(gè)是“hello
world”這個(gè)放在字符串緩沖區(qū)中的,另一個(gè)是new 方法構(gòu)造出來的對(duì)象new String() 這個(gè)對(duì)象,新對(duì)象中保存的是“hello world”對(duì)象罷了,這個(gè)對(duì)象是放在堆內(nèi)存中,而b 指向這個(gè)new String ()對(duì)象,這顯然是不同的兩個(gè)對(duì)象,所以他們用 “=”比較的結(jié)果為false。
如果用equals()方法比較,這結(jié)果為true,因?yàn)閑quals()方法比較的是對(duì)象的內(nèi)容,它們的內(nèi)容都為“hello world”。
另外值得提醒的是,字符串緩沖區(qū)中對(duì)相同的字符串只會(huì)存一次。假如我們同時(shí)寫了String a ="hello world";String b = new String("hello world");那么字符串緩沖區(qū)實(shí)際只有一個(gè)hello world 字符串,在給b賦值時(shí),會(huì)先檢查字符串緩沖區(qū)中是否有“hello world”這個(gè)字符串,如果有則不創(chuàng)建,直接new String(),然后賦值,因此這種情況下,表達(dá)式String? b= new
String ("hello world")也只創(chuàng)建了一個(gè)對(duì)象。
總結(jié)
以上是生活随笔為你收集整理的java string封装类_java中八种基本数据类型以及它们的封装类,String类型的一些理解...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zookeeper清空hbase_Amb
- 下一篇: java服务自动降级方案_在京东我们是如