第47節:Java當中的基本類型包裝類

来源:https://www.cnblogs.com/dashucoding/archive/2018/09/21/9684518.html
-Advertisement-
Play Games

Java當中的基本類型包裝類 01 基本數據類型對象的包裝類 什麼是基本數據類型對象包裝類呢? 就是把基本數據類型封裝成對象,這樣就可以提供更多的操作基本數值的功能了。 基本數據類型對象的包裝類 個: | 基本數據類型 | 包裝類 | | | | | byte | Byte | | short | ...


標題圖

Java當中的基本類型包裝類

01

基本數據類型對象的包裝類

什麼是基本數據類型對象包裝類呢?就是把基本數據類型封裝成對象,這樣就可以提供更多的操作基本數值的功能了。

基本數據類型對象的包裝類8個:

基本數據類型 包裝類
byte Byte
short Short
int Integet
long Long
float Float
double Double
boolean Boolean
char character
java.lang

類 Integer

java.lang.Object
 -> java.lang.Number
  -> java.lang.Integer
public final class Integer
extends Number
implements Comparable<Integer>

Integer類 是將一個基本類型為int的值包裝成為對象的包裝類。
Integer類型的對象中包含了一個int類型的欄位。

基本數據類型對象的包裝類,就是為了提供更多的操作方法,這裡的Integer類中Java提供了多個方法,而且Integer類能夠在int類型和String類型之間互相進行轉換,還可以處理一些int類型有關一些常量和方法等。

一些常量:

常量 返回的類型
MAX_VALUE static int 為返回的是靜態整數類型,表示為int類型的最大值
MIN _VALUE static int 為返回的是靜態整數類型,表示為int類型的最小值
SIZE static int 為返回的是靜態整數類型,表示int值的比特位數
TYPE static Class<Integer> 表示返回基本類型IntClass實例

一些構造方法:

方法 說明
Integer(int value) 構造一個Integer對象,表示指定int的值
Integer(String s) 構造一個分配的Integer對象,表示String參數所指的int值
方法 說明
decode(String nm) static Integer該方法可以將String解碼為Integer
doubleValue() 返回為double類型 是以double類型返回該Integer的值
equals(Object obj) 返回boolean類型 比較此對象與指定對象
floatValue() 返回float類型 以float類型返回該Integer的值
getInteger(String nm) 返回的是 static Integer,確定具有指定名稱的系統屬性的整數值
getInteger(String nm, int val) 返回的是static Integer,確定具有指定名稱的系統屬性的整數值
getInteger(String nm, Integer val) 返回的是static Integer,返回具有指定名稱的系統屬性的整數值
hashCode() 返回此Integer的哈希碼
intValue() 返回int類型 以Int類型返回給Integer的值
longValue() 返回long類型 以long類型返回該Integer的值
toBinaryString(int i) 返回static String類型,以二進位無符號整數形式返回一個整數參數的字元串表示形式
toHexString(int i) 返回static String類型,以十六進位無符號整數形式返回一個整數參數的字元串表示形式
toOctalString(int i) 返回static String類型,以八進位無符號整數形式返回一個整數參數的字元串表示形式
toString() 返回String類型,返回一個表示該Integer值的String對象
toString(int i) 返回類型為static String,返回一個表示指定整數的String對象
toString(int i, int radix) 返回類型為static String,返回用第二個參數指定基數表示的第一個參數的字元串形式
valueOf(int i) 返回類型為static Integer,返回一個表示指定的int值的Integer實例
valueOf(String s) 返回類型為static Integer,返回一個表示指定的String值的Integer實例

02

基本數據類型對象包裝類:用於基本數據和字元串之間的轉換。

parseInt(String s)是將字元串參數作為有符號的十進位整數進行解析。

xxx.parseXxx(string);
註意只有Character沒有解析的方法,我們舉個例子:int parseInt(string); -> byte parseByte(string); -> boolean parseBoolean(string);

System.out.println("12"+3);
// 結果為123
System.out.println(Integer.parseInt("12")+3);
// 結果為 15

parseInt

public static int parseInt(String s) throws NumberFormatException
這個方法是將字元串參數作為有符號的十進位整數進行解析
參數s:包含解析的int表現形式的String。
返回為:帶有符號的十進位的整數值。
拋出為NumberFormatException:如果字元串不含有可解析的整數。

異常:

System.out.println(Integer.parseInt("a12")+3);
// 拋出為NumberFormatException
System.out.println("a12",6);
// 這種方法將其他進位轉換為別的進位數

基本數值轉換為字元串:

  1. 12+“ ”;
  2. String.valueOf(12);
  3. Integer.toString(int);

基本數據類型轉換為包裝類對象

Integer i = new Integer(2);
Integer i2 = new Integer("2");
Integer i3 = Integer.valueOf(2);

包裝類的對象轉換為基本數據類型值

// intValue():為以int類型返回該Integer的值
Integer i = new Integer(2);
int num = i.intValue();

基本數據類型包裝類的自動裝箱和拆箱

int i = 3;
Integer i = new Integer(3);
// 為裝箱
在JDK1.5後,java提供了一個包裝類的新的特性,為自動裝箱。自然有自動拆箱咯~
Integer i = 3;
// 這樣表示即為新特性,自動裝箱。
// 一般我們是這樣寫
Integer i = Integer.valueOf(3);
// 如今
Integer i = 3; 
// 系統會為它自動裝箱
i = i + 2;
// 此時等於這樣
i = i.intValue() + 2; // 等同於 i = Integer.valueOf(i.intValue() + 2);
// 為自動拆箱 i.intValue(),然後再次裝箱即可

Integer包裝類,自動裝箱和自動拆箱的重點

JDK1.5前,沒有新特性

Integer a = new Integer(3); // 為手動裝箱
Integer b = new Integer(3); // 為手動裝箱
System.out.println(a == b); // 結果為:false
System.out.println(a.equals(b)); // 結果為:true

自動裝箱和自動拆箱新特性

Integer x = 100; // 自動
Integer y = 100; // 自動
System.out.println(x == y); // 結果為 true
System.out.println(x.equals(y)); // 結果為 true
Integer x = 200; // 自動
Integer y = 200; // 自動
System.out.println(x == y); // 結果為 false
System.out.println(x.equals(y)); // 結果為 true
Integer integer1 = 127;
Integer integer2 = 127;
System.out.println(integer1 == integer2);
// true
Integer integer1 = 128;
Integer integer2 = 128;
System.out.println(integer1 == integer2);
// false
Integer x = 127;
Integer y = 127;
System.out.println(x==y); // 結果為true
System.out.println(x.equals(y)); // 結果為true
Integer x = 128;
Integer y = 128;
System.out.println( x == y); // 結果為false
System.out.println( x.equals(y) ); // 結果為true

因為在JDK1.5中,Java面對在 -128~127 之間的Integer的值,用的是原生基本數據類型int,會在記憶體中共用,不會再新創建對象空間。就是在這個範圍之間的Integer值比較“==”,是進行int原生數據類型的比較,超出範圍的比較,就會創建新的對象空間。

有人問這究竟是為啥呢?你問我?

這個是jdk1.5之後的新特性,規定是數值在byte範圍內不會創建新的對象空間,而是用原來的空間,這樣就可以節省記憶體空間了哦~

03

案例

// 一堆字元串,定義字元串數字的變數
String nums = "12 34 56 23 7 83";
// 字元串中數值的排序,定義一個方法為排序所要定義的字元串數字的變數,完成任務
nums  = sortNumsString(nums);
// 列印排序後的字元串
System.out.println("nums" + nums);
// 靜態String類型
public static String sortNumsString(String numsString){
 // 空格分割
 String[] strs = numsString.split(" ");
 // 字元串數組轉換int數組,定義了一個方法parseIntArray()
 int[] nums = parseIntArray(strs);
 // 對數組進行排序
 Arrays.sort(nums);
 // 將數組轉換為字元串
 return toString(nums);
}
// 字元串數組轉換int數組
private static int[] parseIntArray(String[] strs){
 // 定義int數組
 int[] arr = new int[strs.length];
 // 遍歷字元串數組
 for(int i = 0; i < strs.length; i++){
  arr[i] = Integer.parseInt[strs[i]);
 }
 return arr;
}
// 將數組轉換為字元串
private static String toString(int[] nums){
 // 創建StringBuilder對象
 StringBuilder sb = new StringBuilder(); 
// 迴圈添加
 for(int i = 0; i < nums.length; i++){
  if(i != nums.length-1){
   sb.append(nums[i]+" ");
  }else{
   sb.append(nums[i]);
  }
 }
 // 返回sb.toString();方法
 return sb.toString();
}

往後餘生,唯獨有你
簡書作者:達叔小生
90後帥氣小伙,良好的開發習慣;獨立思考的能力;主動並且善於溝通
簡書博客: https://www.jianshu.com/u/c785ece603d1

結語

  • 下麵我將繼續對 其他知識 深入講解 ,有興趣可以繼續關註
  • 小禮物走一走 or 點贊

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

-Advertisement-
Play Games
更多相關文章
  • Http負載均衡 Nginx Nginx不僅是一個小巧且高效的HTTP伺服器,也可以做一個高效的負載均衡反向代理,通過它接受用戶的請求並分發到多個Mongrel進程可以極大提高Rails應用的併發能力 Tcp負載均衡 LVS LVS(LinuxVirtual Server)是由章文嵩博士主導開發的一 ...
  • 最近在看javascript高級程式設計這本書,看到了面向對象這一本部分,感覺很重要,所以再一次複習一遍,總結下知識,篇幅過多,分成了三部分,創建對象,原型和原型鏈,繼承,最好可以連著看,不懂得再跳回去看。 面向對象 (Object-Oriented,OO)的語言有一個標誌,那就是它們都有類的的概念 ...
  • 上一篇《HRMS(人力資源管理系統)-從單機應用到SaaS應用-系統介紹》我們已經詳細的分析了HRMS系統具備的功能,並且從HRMS系統的概念、系統功能、HR行業管理現狀及痛點、發展趨勢及行業前景、行業內的服務提供商情況、HRMS系統的建設意義及價值等方面進行了系統化的分析梳理。我想大家已經對於HR... ...
  • RESTful 介面是目前來說比較流行的一種介面,平常在開發中會非常常見。 有過和後端人員對接介面的小伙伴都應該知道,我們所做的大多數操作都是對資料庫的四格操作 “增刪改查” 對應到我們的介面操作分別是: 註意,這裡是我們約定,並非這些動作只能幹這件事情。從表層來說,除get外的其他方法,沒有什麼區 ...
  • 支付寶系統架構概況 典型處理預設 資金處理平臺 財務會計 支付清算 核算中心 交易 柔性事務 消息系統 數據分佈 數據緩存 支付寶技術產品線 支付寶的開源分散式消息中間件–Metamorphosis(MetaQ) Metamorphosis (MetaQ) 是一個高性能、高可用、可擴展的分散式消息中 ...
  • 讓你的項目有對象,你的項目如何才會有面向對象特征呢?沒有面向對象特征的項目不是好項目哦。此篇博文會使用到面向對象特征中的封裝繼承,還有就是枚舉類型。這篇博文教你如何讓你的項目體現面向對象特征。 最近公司需要做一個後臺系統,做了幾個月了老系統的維護更新,真心有點受不了,畢竟一個項目經過了幾個人的手,每 ...
  • 前言 還記得當初寫spring-session實現分散式集群session的共用的時候,裡面有說到利用filter和HttpServletRequestWrapper可以定製自己的getSession方法,實現對session的控制,從而將session存放到統一的位置進行存儲,達到session共 ...
  • 網上搜的加密解密函數,保存下 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...