Java基礎(一) 八大基本數據類型

来源:https://www.cnblogs.com/pal857/archive/2020/03/13/12489525.html
-Advertisement-
Play Games

自從Java發佈以來,基本數據類型就是Java語言的一部分,分別是byte, short, int, long, char, float, double, boolean. 其中: 整型:byte, short, int, long 字元型:char 浮點型:float, double 布爾型:bo ...


自從Java發佈以來,基本數據類型就是Java語言的一部分,分別是byte, short, int, long, char, float, double, boolean.

其中:

整型:byte, short, int, long

字元型:char

浮點型:float, double

布爾型:boolean

在詳細介紹之前,先科普一下,Java中最小的計算單元為位元組,1位元組=8位(bit)。

一. 整型

Java中整型數據屬於有符號數,即第一個bit位為0表示正整數,第一個bit位為1表示負整數。在電腦中負數由補碼進行表示,那麼補碼如何計算呢?

補碼=源碼取反 + 1;

如:

22,在電腦中的表示為00010110,

-22,取反:11101001,加1:11101010

byte

byte屬於Java中的整型,長度為1位元組8bit,取值10000000(-128)到 01111111(127),變數初始化預設值為0,包裝類Byte

short

short屬於Java中的整型,長度為2位元組16bit,取值10000000 00000000(-32768)到 01111111 11111111(32767),變數初始化預設值為0,包裝類Short

int

int屬於Java中的整型,長度為4位元組32bit,取值-2^31 (-2,147,483,648)到 2^31-1(2,147,483,647),變數初始化預設值為0,包裝類Integer

long

long屬於Java中的整型,長度為8位元組64bit,取值-2^63 (-9,223,372,036,854,775,808‬)到 2^63-1(9,223,372,036,854,775,8087),變數初始化預設值為0或0L,包裝類Long

二. 浮點型

Java中浮點型數據無法由二進位直接表示,而是一種對於實數的近似數據表示法,它遵循IEEE 754標準

float

float屬於Java中的浮點型,也叫單精度浮點型,長度為4位元組32bit,變數初始化預設值0.0f,包裝類Float

1. float結構

包含三部分:符號位、指數位、尾數位

 符號位(S)指數位(E)尾數位(M)
長度 1bit 8bit 23bit
說明 0表示正數,1表示負數 格式為在這裡插入圖片描述,E值範圍:(0,255),指數位取值:(在這裡插入圖片描述在這裡插入圖片描述 形式為1.M或0.M。其中當E=0時,取1.M,稱為正規形式,當E!= 0時,取0.M,稱為非正規形式

2. float取值

正規形式:

非正規形式:

根據上面公式很容易計算出float的取值範圍為:


(最小值,當符號位S取1,指數位E取255)


(最大值,當符號位S取0,指數位E取255)

能取到其間的近似數據。

註意:根據指數位和尾數位的取值不同,還有很多特殊情況,如NAN,正無窮,負無窮,但平時基本不會用到,這裡不再深入;同時由於是近似值,因此無法表示金額,表示金額建議使用BigDecimal

double

double屬於Java中的浮點型,也叫雙精度浮點型,長度為8位元組64bit,變數初始化預設值0.0d,包裝類Double

1. double結構

包含三部分:符號位、指數位、尾數位

 符號位(S)指數位(E)尾數位(M)
長度 1bit 11bit 52bit
說明 0表示正數,1表示負數 格式為,E值範圍:(0,2047),指數位取值:() 形式為1.M或0.M。其中當E=0時,取1.M,稱為正規形式,當E!= 0時,取0.M,稱為非正規形式

2. double取值

正規形式:

非正規形式:

根據上面公式很容易計算出double的取值範圍為:


(最小值,當符號位S取1,指數位E取2047)


(最大值,當符號位S取0,指數位E取2047)

能取到其間的近似數據。

註意:根據指數位和尾數位的取值不同,還有很多特殊情況,如NAN,正無窮,負無窮,但平時基本不會用到,這裡不再深入;同時由於是近似值,因此無法表示金額,表示金額建議使用BigDecimal

三. 字元型

char

char屬於java中的字元型,占2位元組16bit,可以賦值單字元以及整型數值, 變數初始化無預設值,包裝類Character。

如:

char a = 'a';

char a = '中';

char a = 12; // 取值範圍0~65536,因為char類型在ASCII字元編碼中,有對應的數值,可直接做運算,輸出字元表中對應的字元

四. 布爾型

boolean

在JVM中並沒有提供boolean專用的位元組碼指令,而boolean類型數據在經過編譯後在JVM中會通過int類型來表示,此時boolean數據4位元組32位,而boolean數組將會被編碼成Java虛擬機的byte數組,此時每個boolean數據1位元組占8bit.

--Java虛擬機規範

僅有兩個值true, false,變數初始化預設值false


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 從程式員往架構師轉型的路上,蔡學鏞老師總結的“四維架構設計方法論”對我頗有幫助,讓我對架構設計有了更加立體化、系統化的認知,現將學習心得分享出來給需要的小伙伴參考。這套方法論通過空間(X、Y、Z)三個維度及時間T維度將問題域解構成可以輕鬆應對的小方塊,分而治之。同時,空間(X、Y、Z)三個維度聯動,... ...
  • 一、動態HTML 1.爬蟲跟反爬蟲 2.動態HTML連載 (1)JavaScript (2)jQuery (3)Ajax (4)DHTML (5)Python採集動態數據 從JavaScript代碼入手採集​;Python第三方庫運行JavaScript,直接採集你在瀏覽器中看到的頁面 二、Sele ...
  • [TOC] getattr詳解 前言 這兩天在優化騰訊雲遷移平臺( "SmartMS" )的中間件( )時. 其中某些介面由於涉及多種伺服器系統類型, 遷移類型的判斷.導致往往一個介面動輒70 80行. 隨便進行一個介面的修改, 調試, 參數的變更. 都將花費好幾分鐘的時間去縷縷中間的邏輯.加上同一 ...
  • 靜態類型和動態類型、類型虛函數與多態、typeid、dynamic_cast、static_cast關鍵字的使用場合 ...
  • Celery 是一個 基於python開發的分散式非同步消息任務隊列,通過它可以輕鬆的實現任務的非同步處理, 如果你的業務場景中需要用到非同步任務,就可以考慮使用celery, 舉幾個實例場景中可用的例子: 你想對100台機器執行一條批量命令,可能會花很長時間 ,但你不想讓你的程式等著結果返回,而是給你返 ...
  • 為什麼要使用輸出控制符: 我們知道在電腦中數據是以二進位的形式存儲在電腦中的,但是01組成的代碼既可以表示數據也可以表示指令。如果不用輸出控制符變成我們想要的樣子的話,很容易的造成誤解。 如果01組成的代碼表示的是數據的話,那麼同樣的 01 代碼組合不同的輸出格式就會有不同的輸出結果。所以需要使 ...
  • 抽象類 抽象類必須用 abstract 修飾,子類必須實現抽象類中的抽象方法,如果有未實現的,那麼子類也必須用 abstract 修飾。抽象類預設的許可權修飾符為 public,可以定義為 public 或 procted,如果定義為 private,那麼子類則無法繼承。抽象類不能創建對象 抽象類和普 ...
  • 代碼示例全部保存在,歡迎star:https://github.com/EnochZg/golang examples 安裝組件 使用 先創建ini尾碼的配置文件,本文以config.ini為例 在main函數中加入以下代碼讀取username配置 運行後即可讀取到username的值,上文中的Se ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...