萬劍歸宗,到底什么是Java的基本數據類型啊?

      網友投稿 739 2025-04-03

      前言


      經常聽人們說Java語言的數據類型分為基本數據類型和引用數據類型。那有人要問了,到底什么是數據類型,什么是基本數據類型,什么是引用數據類型啊?

      別急,聽二當家的慢慢說。

      注:本文不是單純的搬運,而是二當家的經驗和思想的總結,希望能幫助大家加深理解。

      什么是數據類型

      如果要解釋什么是數據類型,那可能先要搞明白什么是數據,從百科引用一下。

      數據(data)是事實或觀察的結果,是對客觀事物的邏輯歸納,是用于表示客觀事物的未經加工的原始素材。

      數據可以是連續的值,比如聲音、圖像,稱為模擬數據;也可以是離散的,如符號、文字,稱為數字數據。

      在計算機系統中,數據以二進制信息單元0、1的形式表示。

      百科的解釋非常嚴謹,但可能有點抽象。我再通俗的解釋下,這么說吧,計算機里我們看見的,聽見的都是數據。說白了,我們用計算機,其實就是用的數據。

      圖片,視頻,音樂,文檔都是數據。

      而數據類型就是數據的類型嘛,我知道我說了等于沒說哈,哈哈哈。

      而Java的數據類型其實就是指Java里可以用來定義數據的類型。

      其實二當家的知道來看文的小伙伴都是專業的大佬,肯定知道什么是數據,什么是數據類型,我只是想闡述下我是如何理解的,希望能幫助小伙伴們去更好的理解。

      什么是基本數據類型

      如果計算機里存儲的萬物都是數據,那么數據就是基本單位嘍?就像從化學角度看萬物都是元素組成,所以元素的種類對應的就是基本數據類型。

      再比如積木,積木可以拼成各種各樣的形狀,但是它也有基本單位,而那個最小的幾種就是基本數據類型。

      Java語言規定了8種基本數據類型。也就是在Java的世界,只有8種元素,只有8種積木。

      而我們想要用Java語言定義任何復雜數據類型最終都是用基本數據類型組合而成。就像元素組成化合物,積木拼成大的形狀一樣。

      基本數據類型的種類

      其實這部分內容不是本文的重點,很多文都說過,但是二當家的還是也說說吧,說的不好的地方,小伙伴敬請諒解。

      整型

      byte 、short 、int 、long

      浮點型

      float 、 double

      字符型

      char

      布爾型

      boolean

      注:

      其實JVM標準里并沒有規定boolean實際占用幾個字節,但是它本身只有2個值,用一位就夠了。然而操作系統想要定位內存,最小也只能按照字節尋址,所以你就算只需要1位就夠了,但是實際占用至少也得是1個字節,具體占多少可以由虛擬機實現決定,我覺得大家應該基本都是占了一個字節,不能少,多了沒必要。

      局部變量是沒有默認值的

      上面的這些類型就是Java語言里可以用來存儲業務數據的全部類型了。

      什么是引用數據類型

      引用就是內存地址,就像我們現實的地址一樣。

      我用積木拼了一棟大樓,我現在需要裝修師傅幫忙裝修,我有兩種辦法,一種是把大樓帶到師傅面前,還有一種是我把大樓的地址給師傅,讓他過來。

      內存有一個特點,就是訪問任何位置的速度是一樣的。你可以認為沒有路程花費,這一點和現實是有區別的,你就當做是時空穿梭吧。但是拷貝內存數據,寫數據卻是實打實的要花費時間的。所以內存里的數據,尤其是大塊的內存,通常都是傳遞地址,進行程序邏輯,因為這樣快,而且所有程序邏輯修改的都是同一份數據,這也恰好符合一般的程序邏輯。

      講的深入一點,調用方法的時候,方法參數都是利用棧去傳遞的,進入方法前分配空間,方法結束后回收空間,這部分空間的生命周期和方法調用周期一致,換句話說,你調用完某個方法,它的參數和返回值就都被銷毀了,你要是想要留著,就得搞一份副本,或者說拷貝,所以如果你是直接把房子搬到師傅面前,那么師傅處理完房子后,你得根據師傅裝修的房子,原樣自己裝修一把,也就是拷貝。但是這樣的事情在Java里不會發生,因為Java里除了基本數據類型外,其他數據類型的參數傳遞和方法返回,都是用的引用,也就是地址。作為調用方,如果是參數,那么傳遞給被調用方法的參數本身就是一份地址拷貝,所以調用方自己那里肯定有一份源地址,而如果是方法的返回值,那么你就得接收,否則方法返回值就被銷毀了,也就無法再去訪問方法返回值了。

      萬劍歸宗,到底什么是Java的基本數據類型啊?

      另外對于實例方法,修改實例屬性,其實是編譯器會把實例的引用傳遞進去,名稱就是“this”。

      在Java的世界里除了基本數據類型外,剩下的數據類型都是引用數據類型。

      引用數據類型的種類

      人們普遍認為Java引用數據類型有三種:數組,接口,類。

      當我們定義引用數據類型的變量時,只需要能放下地址的空間,至于它里面實際存了什么,我們需要尋址過去,里面可能繼續是引用類型,或者存儲真實數據的基本數據類型。

      尾聲

      真正有用的業務數據都是存在基本數據類型的,而復雜數據類型,是用來整合數據的。

      復雜數據類型里包含基本數據類型的屬性,引用類型的屬性,還有就是邏輯方法了。基本數據類型是真正存放數據的,而復雜數據類型,自定義數據類型,引用數據類型,其實就是容器,盒子,箱子,它把一些基本數據類型的數據整合到一起,劃分到一組,來協同作用,邏輯則是對數據的一系列操作。

      所以大神曾說過程序就是數據加上邏輯。

      Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps表格怎么表頭(wps表頭制作方法)
      下一篇:excel2003刪除重復行的教程
      相關文章
      亚洲人成免费网站| 亚洲av无码不卡| 亚洲香蕉免费有线视频| 久久久亚洲精品视频| 亚洲精品国产精品乱码不卡√| 久久久精品国产亚洲成人满18免费网站| 无码欧精品亚洲日韩一区夜夜嗨 | 久久精品国产精品亚洲人人| 一本色道久久88综合亚洲精品高清| 亚洲av无码专区首页| 亚洲国产成人无码AV在线| 亚洲精品天堂在线观看| 中文字幕亚洲码在线| 亚洲欧美成aⅴ人在线观看| 亚洲综合色婷婷在线观看| 亚洲资源在线观看| 亚洲一区影音先锋色资源| 亚洲伊人tv综合网色| 亚洲精品国产成人中文| 久久精品国产亚洲AV未满十八| 亚洲精品无码专区2| 国产午夜亚洲精品午夜鲁丝片| 亚洲日本乱码在线观看| 亚洲成A人片777777| 亚洲成熟xxxxx电影| 亚洲视频欧洲视频| 亚洲成人福利在线| 最新国产成人亚洲精品影院| 亚洲综合精品伊人久久| 亚洲第一se情网站| 亚洲精品天堂成人片?V在线播放| 久久精品国产亚洲麻豆| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲AV日韩综合一区尤物| 亚洲人成网站在线播放2019 | 亚洲日韩亚洲另类激情文学| 亚洲av综合日韩| 亚洲色欲久久久综合网东京热| 亚洲av日韩av不卡在线观看| 亚洲综合无码一区二区三区| 亚洲一区二区三区高清不卡 |