Java Primitive type與References type

Java語言規(guī)格文檔與JVM規(guī)格文檔不一致...


surprice

Java是一種強(qiáng)類型語言,它語言規(guī)范中定義了Java的數(shù)據(jù)類型分為,基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。

  • 基本數(shù)據(jù)類型(Primitive type):4中整型,2種浮點(diǎn)類型,1種表示unicode編碼的char類型和表示真知的boolean類型。
  • 引用數(shù)據(jù)類型(References type):(class,array,interface)類型
  • 引用類型級別:(強(qiáng),軟,弱,虛)引用類型
difference

基本類型存儲(chǔ)的是實(shí)際的值,對象引用類型存儲(chǔ)的是對象的地址。

// 引入Lombok,運(yùn)行這個(gè)例子可以看出引用類型與基本類型的差別。
@Data
public class TypeDemo {
    private int a = 10;

    public static void main(String[] args) {
        TypeDemo demo = new TypeDemo();
        TypeDemo demo1 = demo;
        demo1.setA(100);
        System.out.println(demo.getA());

        int b = 10;
        int c = b;
        c = 100;
        System.out.println(b);
    }
}

基本類型與數(shù)值

  • byte :-128~127 1字節(jié)

  • short : -32768~32767 2字節(jié)

  • int : -2147483648~2147483647 4字節(jié)

  • long : -9223372036854775808~9223372036854775807 8字節(jié)

  • char : '\u0000' ~ '\uffff' 也就是0~65535 2字節(jié)

  • float : 大約為-3.40282347E + 38F ~ -3.40282347E + 38F 4字節(jié)

  • double : 8字節(jié)

  • boolean : false和true,具體字節(jié)未給出,有人說boolean類型占了單獨(dú)使用是4個(gè)字節(jié),在數(shù)組中又是1個(gè)字節(jié)。

注意:

  • 從Jva7開始,加上前綴0b就可以寫成二進(jìn)制數(shù),例如0b1000是8。
  • 數(shù)字字面量可以加上下劃線,易讀。100_0000表示100萬
  • float類型的精度一般很難滿足需求,除非需要快速的處理單精度數(shù)據(jù),一般不用float類型。
  • 如果需要在計(jì)算中不含有任何的誤差,應(yīng)該使用BigDecimal類

引用數(shù)據(jù)類型

發(fā)現(xiàn)了一個(gè)很奇怪的現(xiàn)象...


The Java Virtual Machine Specification

The Java Language Specification

看到了嗎?兩個(gè)都是Java官方的參考文檔,但是結(jié)果不一樣。
不管如何,我們知道有3~4個(gè)引用數(shù)據(jù)類型就好了,引用數(shù)據(jù)類型存儲(chǔ)的是類型的內(nèi)存地址。

引用級別

java中提供了4個(gè)級別的引用,除強(qiáng)引用外,其它的三個(gè)引用級別都可以在java.lang.ref中找打它們的身影。

  • 強(qiáng)引用:正常對象賦值的語句,String a = "abc";強(qiáng)引用可以直接訪問目標(biāo)對象,并且不會(huì)被系統(tǒng)回收,強(qiáng)引用可能導(dǎo)致內(nèi)存泄漏
  • 軟引用:比強(qiáng)引用稍微弱一點(diǎn)的類型,只有再內(nèi)存不足的情況下才會(huì)被回收。如果再內(nèi)存足夠的時(shí)候,調(diào)用System.gc()也不會(huì)回收軟引用的對象。
  • 弱引用:比軟引用弱一點(diǎn)的引用類型,只要發(fā)現(xiàn)弱引用,都會(huì)將對象進(jìn)行回收。
  • 虛引用:最弱的一個(gè)引用類型,一個(gè)持有虛引用的對象,和沒有引用幾乎是一樣的。虛引用必須和引用隊(duì)列一起使用,它的作用在于跟蹤垃圾回收的過程。

最后

簡單的介紹了Java語言基礎(chǔ)中的需要注意的知識(shí)點(diǎn)。

參考:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 不知道大家有沒有這樣一種感覺,程序員的數(shù)量井噴了??赡苁且?yàn)榛ヂ?lián)網(wǎng)火了,也可能是各家培訓(xùn)機(jī)構(gòu)為我們拉來了大量...
    活這么大就沒飽過閱讀 2,846評論 6 25
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,851評論 11 349
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,811評論 18 399
  • 快一個(gè)半月沒有寫過東西,不管是博客還是簡書??煊幸粋€(gè)半月沒有畫東西。不管是臨摹還是創(chuàng)作。你不能說我這一個(gè)半月在閑著...
    七公子steven閱讀 280評論 0 1
  • 來到村里已經(jīng)十天有余,由于村里條件有限,自下村后從來沒洗過澡也沒洗過頭發(fā)。終于,輪休的同志要回來了,我們可以去縣里...
    紅玫瑰和白汽球閱讀 277評論 0 0

友情鏈接更多精彩內(nèi)容