Java基礎教程:Java包裝類概念及應用

2020-12-25 黑馬程式設計師

概述

Java提供了兩個類型系統,基本類型與引用類型,使用基本類型在於效率,然而很多情況,會創建對象使用,因為對象可以做更多的功能,如果想要我們的基本類型像對象一樣操作,就可以使用基本類型對應的包裝類,如下:

Integer類

Integer類概述包裝一個對象中的原始類型 int 的值Integer類構造方法及靜態方法

示例代碼public class IntegerDemo { public static void main(String[] args) { //public Integer(int value):根據 int 值創建 Integer 對象(過時) Integer i1 = new Integer(100); System.out.println(i1); //public Integer(String s):根據 String 值創建 Integer 對象(過時) Integer i2 = new Integer("100"); //Integer i2 = new Integer("abc"); //NumberFormatException System.out.println(i2); System.out.println("--------"); //public static Integer valueOf(int i):返回表示指定的 int 值的 Integer 實例 Integer i3 = Integer.valueOf(100); System.out.println(i3); //public static Integer valueOf(String s):返回保存指定String值的Integer對象 Integer i4 = Integer.valueOf("100"); System.out.println(i4); }}

裝箱與拆箱

基本類型與對應的包裝類對象之間,來迴轉換的過程稱為」裝箱「與」拆箱「:

裝箱:從基本類型轉換為對應的包裝類對象。拆箱:從包裝類對象轉換為對應的基本類型。用Integer與 int為例:(看懂代碼即可)

基本數值---->包裝對象

Integer i = new Integer(4);//使用構造函數函數

Integer iii = Integer.valueOf(4);//使用包裝類中的valueOf方法

包裝對象---->基本數值

int num = i.intValue();

自動裝箱與自動拆箱

由於我們經常要做基本類型與包裝類之間的轉換,從Java 5(JDK 1.5)開始,基本類型與包裝類的裝箱、拆箱動作可以自動完成。例如:

Integer i = 4;//自動裝箱。相當於Integer i = Integer.valueOf(4);

i = i + 5;//等號右邊:將i對象轉成基本數值(自動拆箱) i.intValue() + 5;

//加法運算完成後,再次裝箱,把基本數值轉成對象。

基本類型與字符串之間的轉換

基本類型轉換為String

轉換方式方式一:直接在數字後加一個空字符串方式二:通過String類靜態方法valueOf()示例代碼public class IntegerDemo { public static void main(String[] args) { //int --- String int number = 100; //方式1 String s1 = number + ""; System.out.println(s1); //方式2 //public static String valueOf(int i) String s2 = String.valueOf(number); System.out.println(s2); System.out.println("--------"); }}

String轉換成基本類型

除了Character類之外,其他所有包裝類都具有parseXxx靜態方法可以將字符串參數轉換為對應的基本類型:

public static byte parseByte(String s):將字符串參數轉換為對應的byte基本類型。

public static short parseShort(String s):將字符串參數轉換為對應的short基本類型。

public static int parseInt(String s):將字符串參數轉換為對應的int基本類型。

public static long parseLong(String s):將字符串參數轉換為對應的long基本類型。

public static float parseFloat(String s):將字符串參數轉換為對應的float基本類型。

public static double parseDouble(String s):將字符串參數轉換為對應的double基本類型。

public static boolean parseBoolean(String s):將字符串參數轉換為對應的boolean基本類型。

代碼使用(僅以Integer類的靜態方法parseXxx為例)如:

轉換方式方式一:先將字符串數字轉成Integer,再調用valueOf()方法方式二:通過Integer靜態方法parseInt()進行轉換示例代碼public class IntegerDemo { public static void main(String[] args) { //String --- int String s = "100"; //方式1:String --- Integer --- int Integer i = Integer.valueOf(s); //public int intValue() int x = i.intValue(); System.out.println(x); //方式2 //public static int parseInt(String s) int y = Integer.parseInt(s); System.out.println(y); }}

注意:如果字符串參數的內容無法正確轉換為對應的基本類型,則會拋出java.lang.NumberFormatException異常。

相關焦點

  • java集合詳解合集
    所以的集合類都位於java.util包下,後來為了處理多線程環境下的並發安全問題,java5還在java.util.concurrent包下提供了一些多線程支持的集合類。在學習Java中的集合類的API、編程原理的時候,我們一定要明白,"集合"是一個很古老的數學概念,它遠遠早於Java的出現。
  • java中static, final, 內部類的具體運用
    static概念:static它是靜態修飾符,一般用來修飾類中的成員。當在定義類的時候,類中都會有相應的屬性和方法。而屬性和方法都是通過創建本類對象調用的。static特點:static是靜態修飾符,一般修飾成員。被static修飾的成員屬於類,不屬於單個這個類的某個對象。
  • Java | 第一個 SpringBoot 工程詳解
    最為重要,它由項目生成,是整個工程的應用啟動類 main 函數。代碼由項目生成,代碼如下:SpringApplication 引導應用,並將 HelloworldApplication 本身作為參數傳遞給 run 方法。具體 run 方法會啟動嵌入式的 Tomcat 並初始化 Spring環境及其各 Spring 組件。
  • Java中設置classpath、path、JAVA_HOME的作用?
    path:Windows系統執行命令時要搜尋的路徑在dos命令行中執行命令的時候,會先從當前路徑去找,如果找不到,就會到path路徑下去找比如我的jdk裝在D盤下,當我在C盤執行java -version的時候會出現找不到java命令的情況,設置path的目的就是當在
  • Java基礎面試題簡單總結
    面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。多態性:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。
  • java——Scnner()類下面有幾種方法呢?
    一、Scnner類 Scnner類在java.util包中一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器 findInLine(java.lang.String)、findWithinHorizon(java.lang.String, int) 和 skip(java.util.regex.Pattern) 方法的執行與分隔符模式無關。這些方法會嘗試匹配與輸入中的分隔符無關的指定模式,因此可用於分隔符無關的特殊環境中。在等待更多輸入時這些方法可能阻塞。
  • 萬字概覽 Java 虛擬機
    不適應現代應用的特點 永久代出現時,動態技術還不成熟和普及,永久代的空間足以容納那時候的應用系統產生的方法區數據;而隨著 JavaEE 和動態化技術的出現,永久代使用具有大小上限的空間來存儲數據就顯得捉襟見肘了。這一點可以參考第一點的說明。
  • [博客更新]Java 中 final 關鍵詞的使用
    上一篇文章我們講了 java 中 static 關鍵字的使用,這裡再將一下 final 關鍵字的使用。final 在 java 中可以看做一個「終結者」,它可以定義類、定義方法和定義變量。當定義類的時候,該類不能被繼承當定義方法的時候,該方法不能被子類覆蓋(Override)當定義變量的時候,該變量只能在定義的時候初始化,後期不能做改變,即變為一個常量。
  • Kotlin VS Java:基本語法差異
    之間的差異,對於使用java開發android的大牛們來說可以做個基本的比較。        正如你所看到的,我們在這裡有相同的空檢查。3. cast off utils(擺脫工具類)         讓我們來討論一下有關使用util類的醜陋事情。 你有沒有一個項目沒有他們? 我們幾乎不記得這一切。 Kotlin有一個聰明的解決方案 - 擴展功能 - 幫助你擺脫所有的util類一勞永逸。         擴展函數幾乎是一個通常的Kotlin函數。
  • 拋棄 Java 改用 Kotlin 的六個月後,我後悔了!
    把它看作是已經實例化為單例的匿名內部類。事實上,這個類並不是匿名的,它的名字是 Companion,但你可以省略這個名字。看到了嗎?這很簡單。"我很欣賞對象聲明的概念——單例很有用。但從語言中刪除靜態成員是不切實際的。在 Java 中我們使用靜態 Logger 很經典,它只是一個 Logger,所以我們不關心面向對象的純度。它能夠工作,從來沒有任何壞處。
  • java集合【6】——— Iterable接口
    內部定義的方法 java集合最源頭的接口,實現這個接口的作用主要是集合對象可以通過迭代器去遍歷每一個元素。JamException in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList
  • java練習本(2019-06-12)
    題目java語言使用的字符集是?2.答案解析A.這是一種常用於會計系統中的編碼方式,與java關係不大,錯誤B.ASCII碼1961年提出,是目前使用最廣泛的西文字符集,但不是java使用的編碼C.GBK為一種漢子編碼格式,包含了大量的漢子編碼,java也並未使用它最為編碼格式D.Unicode編碼是一種將世界上所有符號都納入其中的編碼格式來避免編碼不匹配的亂碼問題
  • 探索Java中的網絡編程技術
    會話層是將通過傳輸層建立數據傳輸的通路.表示層是進行對接收的數據進行解釋,加密與解密.應用層主要是一些終端的應用.傳輸協議即是通訊的規則,常見的協議為TCP, UDP.java.net類 InetAddressjava.lang.Object-> java.net.InetAddress所有已實現的接口有:直接已知子類:Inet4Address, Inet6Addresspublic class InetAddress extends Object
  • JavaMelody v1.57.0 發布,系統監控工具
    fix: used/max file descriptor counts are not displayed in oracle java 8 (c04ef79 thanks to Colin Ingarfield)fix issue 488: IllegalStateException if a filter calls getWriter() before the MonitoringFilter
  • Java中有這玩意?
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫一:簡潔二:方法引用三:Optional 可選值一:簡潔方法引用分為三種,方法引用通過一對雙冒號:: 來表示,方法引用是一種函數式接口的另一種書寫方式靜態方法引用,通過類名::靜態方法名, 如 Integer::parseInt
  • 如何優雅的設計 Java 異常
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫導語異常處理是程序開發中必不可少操作之一,但如何正確優雅的對異常進行處理確是一門學問
  • 這些 Java 8 官方挖的坑,你踩過幾個?
    Caused by: java.lang.IllegalArgumentException: Illegal base64 character 3f    at java.util.Base64$Decoder.decode0(Base64.java:714)    at java.util.Base64$Decoder.decode
  • 「JAVA」屬性、路徑分隔符有何不同?file對象創建,文件過濾器
    為解決這個問題,Java 在java.io.File類中提供了兩類常量,分別來表示路徑分隔符和屬性分隔符,官方源碼如下所示:java.io.File類 中的路徑分隔符和屬性屬性分隔符、路徑分隔符apijava.io包中,包中有提供大量的I/O操作的api,但這一切的基礎是File類,File 這個名字既可以表示一個特定的文件,也可以表示一個目錄(目錄下有多個文件)。
  • 我要告訴你:java接口中可以定義private私有方法
    在傳統的Java編程中,被廣為人知的一個知識點是:java Interface接口中不能定義private私有方法。只允許我們定義public訪問權限的方法、抽象方法或靜態方法。但是從Java 9 開始,Interface 接口中允許定義私有方法和私有靜態方法。下面我們就來為大家介紹其語法規則,和為什麼要有這樣的設計。
  • Java 枚舉(enum) 詳解7種常見的用法
    在java中如何更好的使用這些「數據集」呢?因此枚舉便派上了用場,以下代碼詳細介紹了枚舉的用法。JDK1.5引入了新的類型——枚舉。在 Java 中它雖然算個「小」功能,卻給我們的開發帶來了「大」方便。在JDK1.5 之前,我們定義常量都是: public static fianl.... 。