什么是包裝類

什么是包裝類

在Java中,包裝類(Wrapper Class)是為基本數據類型提供的對應的引用類型。Java中的基本數據類型(如int、char、boolean等)不是對象,為了在需要對象的場景中使用基本數據類型(如集合框架、泛型等),Java提供了包裝類。

每種基本數據類型都有對應的包裝類:

  • byte → Byte
  • short → Short
  • int → Integer
  • long → Long
  • float → Float
  • double → Double
  • char → Character
  • boolean → Boolean

包裝類可以將基本數據類型的值包裝為對象,同時提供了許多用于操作基本數據類型的方法。

包裝類是值類型還是引用類型,使用=會改變原來的對象嗎?

  1. 包裝類是引用類型:所有包裝類都是java.lang包下的類,它們創建的實例都是對象,因此屬于引用類型。

  2. 使用=不會改變原來的對象:當使用=為包裝類變量賦值時,實際上是將引用指向了新的對象,而不是修改原來的對象。因為包裝類是不可變的(immutable),它們的內部值一旦創建就無法修改。

示例:

Integer a = new Integer(10);
Integer b = a;
b = new Integer(20);
// 此時a仍然是10,b是20,a的值沒有被改變

包裝類的緩存機制

Java中部分包裝類提供了緩存機制,對一定范圍內的值進行緩存,以提高性能和減少內存占用。當使用自動裝箱或valueOf()方法創建對象時,會優先使用緩存中的對象。

包裝類緩存范圍緩存機制說明
Byte-128 ~ 127全部緩存,范圍內的值會復用同一個對象
Short-128 ~ 127固定范圍緩存,超出范圍會創建新對象
Integer-128 ~ 127默認范圍緩存,可通過JVM參數調整上限
Long-128 ~ 127固定范圍緩存,與Short相同
Character0 ~ 127緩存ASCII字符范圍內的字符
Float無緩存沒有實現緩存機制
Double無緩存沒有實現緩存機制
Booleantrue和false只緩存兩個靜態實例:TRUE和FALSE

緩存機制示例:

Integer i1 = 100;    // 自動裝箱,使用緩存
Integer i2 = 100;
System.out.println(i1 == i2);  // true,指向同一個緩存對象Integer i3 = 200;    // 超出緩存范圍
Integer i4 = 200;
System.out.println(i3 == i4);  // false,指向不同對象

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

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

相關文章

用Python打造專業級老照片修復工具:讓時光倒流的數字魔法

在這個數字化時代,我們手中珍藏著許多泛黃、模糊、甚至有劃痕的老照片。這些照片承載著珍貴的回憶,但時間的侵蝕讓它們失去了往日的光彩。今天,我將帶您一起用Python開發一個專業級的老照片修復工具,讓這些珍貴的記憶重現光彩。為…

linux中查找包含xxx內容的文件

linux中怎么查找哪個文件包含xxx內容 在Linux中查找包含特定內容的文件 在Linux系統中,有幾種常用方法來查找包含特定內容的文件。以下是幾種最有效的方法:1. 使用 grep 命令(最常用) 基本語法:bash grep -r "搜索…

sklearn 加州房價數據集 fetch_california_housing 出錯 403: Forbidden 修復方案

問題 加載加州房價數據時出現 403 錯誤 HTTP Error 403: Forbidden from sklearn.datasets import fetch_california_housingcalifornia fetch_california_housing() print(california.target.shape) 解決方案 運行下述代碼,然后再運行上述的 fetch_california_hou…

嵌入式學習---(硬件)

1、在LED實驗中,在對Soc引腳配置時都做了哪些工作?復用功能配置操作寄存器:IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03將引腳的低 4 位設置為 0101,將引腳復用為 GPIO 功能電氣特性配置操作寄存器:IOMUXC_SW_PAD_CTL_PAD_GPIO1…

微信小程序開發教程(十一)

目錄:1.上拉觸底案例-初步實現上拉觸底效果2.上拉觸底案例-添加loading效果3.上拉觸底案例-節流處理4.擴展-自定義編譯模式1.上拉觸底案例-初步實現上拉觸底效果頁面加載的時候調用這個方法:設置樣式:下拉觸底后繼續調用獲取顏色的方法2.上拉…

Android相機API2,基于GLSurfaceView+SurfaceTexture實現相機預覽,集成的相機算法采用GPU方案,簡要說明

Android相機API2,基于GLSurfaceViewSurfaceTexture實現相機預覽,集成的相機算法采用GPU方案,簡要流程如下(不疊加相機算法的預覽顯示流程也大體如此,只是去掉了算法部分):進入相機:1,新建實現了…

[code-review] 日志機制 | `LOG_LEVEL`

第6章:日志機制(調試) 歡迎來到我們了解ChatGPT-CodeReview項目的最后一章 在第5章:文件過濾邏輯(范圍管理器)中,我們學習了機器人如何智能地決定哪些文件需要發送給AI審查。 但一旦機器人開…

n8n工作流平臺入門學習指南

目錄 1、基礎背景 2、核心概念 2.1 節點(Nodes) 2.2 連接(Connections) 2.3 工作流(Workflows) 3、常用節點說明 4、基于Docker快速部署 5、學習資料 6、常見問題 強烈推薦,大家不懂的直接問:N8N大師(GPT),科…

【Oracle經驗分享】字符串拼接過長問題的解決方案 —— 巧用 XMLAGG

📑 目錄🔍 問題背景?? 常見拼接方式的限制💡 XMLAGG 的解決方案📝 示例代碼📌 注意事項? 總結🔍 問題背景在日常開發中,我們經常需要把多行數據拼接成一個字符串。例如將某個字段的多條記錄拼…

AJAX入門-URL、參數查詢、案例查詢

本系列可作為前端學習系列的筆記,代碼的運行環境是在VS code中,小編會將代碼復制下來,大家復制下來就可以練習了,方便大家學習。 HTML、CSS、JavaScript系列文章 已經收錄在前端專欄,有需要的寶寶們可以點擊前端專欄查…

【SpringBoot】24 核心功能 - Web開發原理 -Spring Boot 異常處理機制

前言 在開發 Web 應用程序時,異常處理是一個至關重要的部分。Spring Boot 提供了一套強大的異常處理機制,使得開發者能夠輕松地處理和響應各種異常情況。本文將深入探討 Spring Boot 中的異常處理機制,包括默認的錯誤處理規則、定制錯誤處理邏…

JVM第一部分

PC寄存器:存儲的是數字 0, 3, 6, 10, 17 這樣的字節碼偏移量。 LineNumberTable:是一個映射表,它將上述的偏移量“翻譯”成我們程序員能看懂的源代碼行號。 JVM堆 JVM堆由兩部分組成:年輕代老年代 年輕代包括三部分:ed…

IDEA使用Maven和MyBatis簡化數據庫連接(配置篇)

目錄: Maven:簡化項目構建 MyBatis:簡化Jdbc Maven:是一款項目構建與依賴管理工具,核心作用是自動化項目編譯、打包等流程,并統一管理項目所需的第三方 Jar 包(如 MyBatis 的 Jar 包)。 MyBatis&#xf…

Java 泛型詳解:從基礎到高級應用

目錄 一、泛型的基本概念 為什么需要泛型? 二、泛型類與泛型接口 【1】定義泛型類 【2】定義泛型接口 三、泛型方法 四、泛型通配符 【1】無界通配符(?) 【2】上界通配符(? extends T) 【3】下界通配符&am…

嵌入式 Linux 啟動機制全解析:從 Boot 到 Rootfs

🚀 嵌入式 Linux 啟動機制全解析:從 Boot 到 Rootfs 在嵌入式系統中,Linux 的啟動流程不僅是內核加載的過程,更是 bootloader、設備樹、初始根文件系統、啟動配置文件等多個組件協同工作的結果。不同的文件系統和啟動方式會影響系…

Python 操作Office的PPT、Word、Excel,同時兼容WPS

文章目錄概要一、環境準備1. 安裝必要的Python庫2. 系統要求二、核心實現原理1. 檢測已安裝的Office類型2. 初始化對應的應用程序三、完整代碼實現四、使用示例五、WPS兼容處理詳解1. 形狀和文本框訪問兼容處理2. PPT圖片粘貼兼容處理3. 資源釋放的重要性六、圖片操作實現詳解1…

ISP之DHCPv6-PD(前綴代理)為用戶下發前綴

一、組網需求家庭用戶要使用IPv6地址接入互聯網。為方便用戶接入,運營商使用DHCPv6-PD的方式給家用路由器下發IPv6地址前綴,用戶路由器LAN側不需要手工指定鏈路的IPv6地址前綴,家用路由器可以給用戶終端自動配置IPv6地址和其它網絡參數。本例…

Django全棧班v1.04 Python基礎語法 20250912 上午

rm 刪除命令 注意:刪除操作是不可逆的,一旦刪除就無法撤銷,請謹慎使用。刪除文件: rm file.py遞歸刪除目錄: rm -r demo/強制刪除: rm -f file.py交互式刪除: rm -i *.txt課程定位 “學習Python…

Java 21 虛擬線程高并發落地:中間件適配、場景匹配與細節優化的技術實踐

作為 Java 21 的核心特性,虛擬線程(Virtual Thread)憑借 “用戶態調度”“輕量級資源占用” 的優勢,成為高并發場景下線程模型優化的重要方向。但在實際落地中,不少團隊會陷入 “技術用了卻沒效果” 的困境 ——QPS 提升有限、中間件調用阻塞、CPU 使用率異常升高。 本文…

數據庫在并發訪問時,不同隔離級別下臟讀幻讀問題

數據庫隔離級別并非安裝后就固定,絕大多數主流數據庫(如MySQL、PostgreSQL、SQL Server)都支持動態調整和運行中自定義,具體調整范圍可分為全局、會話和語句三個層級。 全局級別調整:修改數據庫配置文件(如…