java數據類型簡介,及其內存分配

        常常碰到的面試題: java有哪些數據類型,String是否是基本數據類型,他們有什麼區別?java

    相信有不少同窗都能背出八大基本類型以及他們的區別,可是JVM是怎麼對它們進行內存分配的呢?
面試

java的數據類型分爲兩類:基本類型和引用類型數組

基本類型:byte short,int,long,float,double,char,booleanspa

引用類型:類,接口,數組對象

String 不是基本類型,他是一個特殊的類,下面會講到他的特殊地方。blog

    基本類型,存放在棧中,存放的都是值,好比int a=3;這裏變量a裏存放的就是值,沒有a存放的是引用這一說了,也沒有字面值這一說。千萬別被迷惑。
接口

      引用類型,對於一個類對象的引用,好比Person p=new Person(); 其中p存放在棧中,new Person();存放在堆中,這毫無異議。若是Person有基本類型,好比有屬性 int age;那麼age也跟隨new Person();存放在堆中,千萬別理解爲 age存放在棧中,並非全部的基本類型都存放在棧中,要根據上下文考慮。內存

對於String str="abc"; 它實際上是先從常量池中尋找值爲abc的字符串。若是找到就把引用地址返回給str。不然就會在常量池建立abc,沒有從堆中尋找abc的說法。這也是一個陷阱把。字符串


詳細參考下面文章,回答的很是精彩:it

http://zangxt.iteye.com/blog/440330#comments

相關文章
相關標籤/搜索