【Java基礎面試題】數據類型

Java面試高頻總結:基本數據類型深度解析

📊 八種基本數據類型詳解

數據類型關鍵字字節數位數默認值取值范圍核心特性
字節型byte180-128 ~ 127最小整數類型
短整型short2160-32,768 ~ 32,767較少使用
整型int4320-231 ~ 231-1 (約±21億)最常用整數類型
長整型long8640L-2?3 ~ 2?3-1大范圍整數
單精度float4320.0f±3.4e-38 ~ ±3.4e38需后綴f/F
雙精度double8640.0d±1.7e-308 ~ ±1.7e308默認浮點類型
字符型char216‘\u0000’0 ~ 65,535 (Unicode字符)存儲單個字符
布爾型boolean-1falsetrue/false條件判斷專用

💡 關鍵記憶點

  • intlong的區別不僅是范圍大小,更在內存占用處理效率
  • 浮點類型默認是double,聲明float必須顯式添加f后綴
  • boolean大小未精確定義,JVM實現通常使用1字節

🔄 數據類型轉換與運算

類型轉換三要素

  1. 隱式轉換(自動提升)

    • 小范圍類型→大范圍類型自動轉換
    • 方向:byte → short → int → long → float → double
    • charint自動轉換(獲取Unicode值)
  2. 顯式轉換(強制類型轉換)

    • 語法:(目標類型)變量名
    • 風險:精度丟失(浮點→整數)或數據溢出(大整數→小整數)
    • 示例:double d = 3.14; int i = (int)d; // i=3
  3. 字符串轉換橋梁

    • 基本類型→String:String.valueOf()"" + 基本類型
    • String→基本類型:Integer.parseInt()等包裝類方法

?? long與int互轉注意事項

轉換方向方式風險等級推薦做法
int → long隱式自動★☆☆☆☆直接賦值即可
long → int強制顯式★★★★☆必須檢查范圍:if(longVal >= Integer.MIN_VALUE && longVal <= Integer.MAX_VALUE)

💰 BigDecimal vs double:金融計算的生死抉擇

為什么double不適合金融計算?

// 典型精度丟失案例
System.out.println(0.1 + 0.2); 
// 輸出:0.30000000000000004 (而非0.3)

BigDecimal核心優勢

維度doubleBigDecimal
精度15-17位有效數字任意精度
計算原理二進制浮點近似值十進制精確計算
舍入控制基本四舍五入8種舍入模式
適用場景科學計算、3D圖形財務系統、貨幣
性能慢(約10-100倍)

🔥 黃金法則:凡是涉及貨幣金額稅率計算利息結算等場景,必須使用BigDecimal!


📦 裝箱與拆箱機制揭秘

核心概念

裝箱
拆箱
基本類型 int
包裝類 Integer

自動裝箱/拆箱原理

  • 裝箱Integer i = 100; → 編譯為Integer.valueOf(100)
  • 拆箱int j = i; → 編譯為i.intValue()

使用陷阱

Integer a = 100;
Integer b = 100;
Integer c = 200;
Integer d = 200;System.out.println(a == b); // true(緩存范圍-128~127)
System.out.println(c == d); // false(超出緩存,新建對象)

? int vs Integer:原始與包裝的博弈

存在意義對比

維度int(基本類型)Integer(包裝類)
內存占用4字節16字節(對象頭+字段)
存儲位置棧內存堆內存
功能擴展僅數值運算提供類型轉換、解析等方法
集合兼容不可直接使用可直接存入集合
泛型支持不可用于泛型可用于泛型
空值表示無(0有歧義)可用null表示缺失值

使用場景決策樹

graph TD
A[需要存儲數據] --> B{是否使用集合/泛型?}
B -->|是| C[使用Integer]
B -->|否| D{是否高頻計算?}
D -->|是| E[使用int]
D -->|否| F{需要空值語義?}
F -->|是| C
F -->|否| E

🎯 Integer緩存機制深度解析

緩存范圍與原理

  • 默認范圍:-128 ~ 127(可通過JVM參數-XX:AutoBoxCacheMax=<size>擴展上限)
  • 實現原理Integer.valueOf()優先返回緩存對象
  • 源碼關鍵
    public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);
    }
    

緩存機制影響

場景結果原因分析
Integer a = 127;
Integer b = 127;
a == b命中緩存,同一對象
Integer c = 128;
Integer d = 128;
c != d超出范圍,新建不同對象
Integer e = new Integer(100);
Integer f = new Integer(100);
e != f強制新建對象

?? 重要建議:Integer比較始終使用equals()而非==


💎 核心知識總結

  1. 基本類型選擇鐵律

    • 整數默認用int,超20億用long
    • 浮點默認用double,精確計算用BigDecimal
  2. 類型轉換三原則

    • 小轉大自動,大轉小強制
    • 浮點轉整數截斷小數
    • 字符串轉換注意格式異常
  3. 包裝類使用精髓

    • 集合存儲必須用包裝類
    • 高頻計算場景用基本類型
    • 對象比較用equals()
  4. Integer緩存陷阱

    • 默認緩存-128~127
    • 值比較用equals()
    • 避免用new Integer()創建對象

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93535.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

攻防世界—unseping(反序列化)

一.審題<?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($this->method, array("ping"))) {call_u…

AI熱點周報(8.10~8.16):AI界“冰火兩重天“,GPT-5陷入熱議,DeepSeek R2模型訓練受阻?

名人說&#xff1a;博觀而約取&#xff0c;厚積而薄發。——蘇軾《稼說送張琥》 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 目錄3分鐘速覽版&#xff1a;一張表看懂本周AI大事一、GPT-5&#xff1a;期待越高&#x…

Python_vue3_django旅拍在線婚紗攝影網站的設計與實現016023190_源碼LW_講解安裝

目錄前言-本系統介紹已開發項目效果實現截圖開發技術詳細介紹論文設計框架系統測試核心代碼參考示例總結源碼獲取詳細視頻演示或者查看其他版本&#xff1a;文章底部獲取博主聯系方式&#xff01;前言-本系統介紹 利用Python語言、MySQL數據庫&#xff0c;Django框架&#xff0…

Python爬蟲-爬取政務網站的文檔正文內容和附件數據

前言 本文是該專欄的第67篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文,筆者以某政務網站為例子。基于Python爬蟲采集某政務網站的文檔正文內容和其關聯的附件數據。 具體的實現思路以及完整實現代碼邏輯,筆者將在正文進行詳細介紹。廢話不多說,跟著筆者直接往下…

Python:如何在Pycharm中顯示geemap地圖?

01 說明 或許在舊版本的python和jupyter中并不能成功. 作為參考&#xff0c;這里給出實驗成功的版本&#xff1a;名稱版本通道geemap0.36.1conda-forgejupyter1.1.1conda-forgepycharm2024.1.4 (Professional Edition)nullpython3.11.13conda-forge此外&#xff0c;由于顯示底圖…

力扣3:無重復字符的最長子串

力扣3:無重復字符的最長子串題目思路代碼題目 給定一個字符串 s &#xff0c;請你找出其中不含有重復字符的 最長 子串 的長度。 思路 這道題的思路其實是很簡單的&#xff0c;最后我們需要得到子串的長度所以我們可以定義兩個變量即子串的左邊界和右邊界這樣有了左右邊界就…

Git登錄配置的詳細方法

Git登錄綁定主要涉及配置用戶信息和設置身份驗證。以下是詳細的配置方法&#xff1a; 1. 配置基本用戶信息 # 全局配置用戶名和郵箱 git config --global user.name "你的用戶名" git config --global user.email "你的郵箱example.com"# 或者為單個倉庫配…

測試工程師的AI轉型指南:從工具使用到測試策略重構

測試工程師的AI轉型指南&#xff1a;從工具使用到測試策略重構 測試工程師正站在職業轉型的十字路口。當GitHub Copilot能自動生成測試用例&#xff0c;AI性能工具能預測系統瓶頸&#xff0c;傳統“手動執行用例、人工分析結果”的工作模式正被顛覆。某互聯網公司測試團隊的調研…

3D打印——給開發板做外殼

3D打印——給開發板做外殼前言一、建立開發板3D模型根據開發板尺寸繪制草圖繪制PCB草圖&#xff08;手動&#xff09;繪制PCB草圖&#xff08;導入&#xff09;拉伸PCB板下載零件3D模型裝配零件二、建立外殼3D模型盒子蓋子&#xff08;卡扣&#xff09;最終效果三、問題記錄前言…

Spring AI架構分析

Spring AISpring AI開發框架提供對接應用與AI模型的集成開發能力&#xff0c;讓開發者更加容易地開發智能體以及其他生成式人工智能的應用&#xff1a;模型&#xff08;Model&#xff09;AI模型是算法與數據的集合&#xff0c;用于處理信息以及生成信息&#xff0c;主要AI模型的…

Javar如何用RabbitMQ訂單超時處理

RabbitMQ 訂單超時處理方案 使用 RabbitMQ 的 TTL 死信隊列&#xff08;DLX&#xff09; RabbitMQ 的 TTL&#xff08;Time-To-Live&#xff09; 和 死信隊列&#xff08;Dead Letter Exchange&#xff09; 是處理訂單超時的常見方案。核心思路是設置消息的過期時間&#xff0…

記錄一下 StarRocks 點查的 Profile Metrics

背景 Starrocks 3.5 補充兩個點查的 profile 一個是沒有開啟點查的情況&#xff0c;也就是SET enable_short_circuit false; 一個是開啟點查的情況&#xff0c;也就是SET enable_short_circuit true; 其中建表語句如下&#xff1a; CREATE TABLE ac_account (id bigint(20) …

react echarts圖表監聽窗口變化window.addEventListener(‘resize’)與ResizeObserver()

發生問題場景 系統頁面使用tabs標簽頁,當有多個組件&#xff0c;有使用eCharts圖表的頁面時&#xff0c;其中的一個頁面或其他頁面使用了F11的頁面全屏&#xff0c;關閉全屏后圖表會收縮起來(注:固定eCharts的width、height 的參數值是無影響&#xff0c;按照固定參數大小展示)…

Leaflet賦能:WebGIS視角下的省域區縣天氣可視化實戰攻略

目錄 前言 一、空間數據基礎 1、省域空間檢索 2、區縣天氣信息檢索 二、天氣數據簡介 1、省域天氣數據獲取 2、區縣名稱不一致 三、SpringBoot后臺實現 1、Java后臺天氣數據查詢 2、控制層實現 四、WebGIS前端實現 1、氣溫顏色及圖例初始化 2、氣溫數據展示實現 五…

《SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents》論文精讀筆記

前言 論文鏈接&#xff1a;[2401.10935] SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents SeeClick是一種只依賴截圖就能執行自動化任務的方法。 在這篇論文中&#xff0c;還提出了ScreenSpot數據集&#xff0c;涵蓋移動端、桌面和Web環境的真實benchma…

校園綜合數據分析可視化大屏 -Vue純前端靜態頁面項目

最近一直在學習用vue來制作 一些 大屏報表的網站&#xff0c;今天就來分享一個我最近做的一個 關于校園綜合數據分析可視化大屏的網站。 使用的技術是vue2 element-uiVue2&#xff1a;Element-UI&#xff1a;ECharts&#xff1a;Node版本 16.20 安裝依賴&#xff1a;n…

【adb端口5555】烽火hg680-gy_烽火hg680-gc安卓9線刷燒錄包 解決用一段時間就提示升級的問題

烽火hg680-gy_烽火hg680-gc安卓9線刷燒錄包 解決提示升級的問題本固件可用于那些adb打不開或無法用U盤成功刷機的盒子&#xff1b;本固件需要準備一個TTL線哦&#xff1b;CH340型號的 可以網上自購&#xff1b;TTL鏈接點 參考下圖&#xff1a;其他也沒有特別需要說明了的&#…

大模型應用發展與Agent前沿技術趨勢(中)

大模型與Agent結合的深度技術架構 分層式Agent架構設計 隨著大模型規模的不斷增長&#xff0c;傳統的Agent實現方式已難以滿足高性能、高可擴展性的需求。現代大模型Agent系統通常采用分層式架構設計&#xff0c;將復雜的決策過程分解為多個功能模塊&#xff0c;每個模塊負責特…

Python可視化工具-Bokeh:動態顯示數據

目錄 概述 1 認識Bokeh 1.1 Bokeh介紹 1.2 安裝Bokeh 1.3 范例介紹 2 Bokeh的應用 2.1 Bokeh應用的框架結構 2.2 實時性數據核心原理 3 具體案例 3.1 代碼實現 3.2 部署和運行 概述 Bokeh是一個用于創建交互式可視化的Python庫&#xff0c;特別適合在Web瀏覽器中展示…

Elasticsearch「kNN Retriever」把向量檢索裝進一條 \_search 管線

1. kNN retriever 是什么&#xff1f; kNN retriever 是 Retriever 框架中的首階段召回器&#xff0c;負責對一個向量字段做近鄰搜索&#xff0c;返回 Top-K 文檔。相比早期的 knn 頂級語法&#xff0c;Retriever 讓我們能在一個請求里組合多種策略&#xff08;如 RRF/Rescorer…