Java常用類-包裝類

来源:https://www.cnblogs.com/mengd/archive/2020/07/13/13296330.html
-Advertisement-
Play Games

一、 包裝類的使用 java提供了8種基本數據類型對應的包裝類,使得基本數據類型的變數具有類的特征 需要掌握的:基本數據類型、包裝類、String三者之間的相互轉換 基本數據類型 《 》包裝類:自動裝箱,自動拆箱 基本數據類型、包裝類 >String類型:調用String重載的valueOf(Xxx ...


一、 包裝類的使用

  • java提供了8種基本數據類型對應的包裝類,使得基本數據類型的變數具有類的特征
  • 需要掌握的:基本數據類型、包裝類、String三者之間的相互轉換
  • 基本數據類型 《---------------》包裝類:自動裝箱,自動拆箱
  • 基本數據類型、包裝類--->String類型:調用String重載的valueOf(Xxx xxx)
  • String類型 --->基本數據類型、包裝類:調用包裝類的parseXxx(String s)
import org.junit.Test;
public class WrapperTest {
	
	//String類型 --->基本數據類型、包裝類:調用包裝類的parseXxx(String s)
	@Test
	public void test5(){
		String str1 = "123";
		//錯誤的情況:
//		int num1 = (int)str1;
//		Integer in1 = (Integer)str1;
		//可能會報NumberFormatException
		int num2 = Integer.parseInt(str1);
		System.out.println(num2 + 1);
		
		String str2 = "true1";
		boolean b1 = Boolean.parseBoolean(str2);
		System.out.println(b1);
	}
	
	//基本數據類型、包裝類--->String類型:調用String重載的valueOf(Xxx xxx)
	@Test
	public void test4(){
		
		int num1 = 10;
		//方式1:連接運算
		String str1 = num1 + "";
		//方式2:調用String的valueOf(Xxx xxx)
		float f1 = 12.3f;
		String str2 = String.valueOf(f1);//"12.3"
		
		Double d1 = new Double(12.4);
		String str3 = String.valueOf(d1);
		System.out.println(str2);
		System.out.println(str3);//"12.4"
		
	}
	
	/*
	 * JDK 5.0 新特性:自動裝箱 與自動拆箱
	 */
	@Test
	public void test3(){
//		int num1 = 10;
//		//基本數據類型-->包裝類的對象
//		method(num1);
		
		//自動裝箱:基本數據類型 --->包裝類
		int num2 = 10;
		Integer in1 = num2;//自動裝箱
		
		boolean b1 = true;
		Boolean b2 = b1;//自動裝箱
		
		//自動拆箱:包裝類--->基本數據類型
		System.out.println(in1.toString());
		
		int num3 = in1;//自動拆箱
		
	}
	
	public void method(Object obj){
		System.out.println(obj);
	}
	
	//包裝類--->基本數據類型:調用包裝類Xxx的xxxValue()
	@Test
	public void test2(){
		Integer in1 = new Integer(12);
		
		int i1 = in1.intValue();
		System.out.println(i1 + 1);
		
		
		Float f1 = new Float(12.3);
		float f2 = f1.floatValue();
		System.out.println(f2 + 1);
	}
	
	//基本數據類型 --->包裝類:調用包裝類的構造器
	@Test
	public void test1(){
		
		int num1 = 10;
//		System.out.println(num1.toString());
		Integer in1 = new Integer(num1);
		System.out.println(in1.toString());
		
		Integer in2 = new Integer("123");
		System.out.println(in2.toString());
		
		//報異常
//		Integer in3 = new Integer("123abc");
//		System.out.println(in3.toString());
		
		Float f1 = new Float(12.3f);
		Float f2 = new Float("12.3");
		System.out.println(f1);
		System.out.println(f2);
		
		Boolean b1 = new Boolean(true);
		Boolean b2 = new Boolean("TrUe");
		System.out.println(b2);
		Boolean b3 = new Boolean("true123");
		System.out.println(b3);//false
		
		
		Order order = new Order();
		System.out.println(order.isMale);//false
		System.out.println(order.isFemale);//null
	}
	
}

class Order{
	
	boolean isMale;
	Boolean isFemale;
}

二、問題

public void test() {
        Object o1 = true ? new Integer(1) : new Double(2.0);
        //預設調用toString方法
        System.out.println(o1);//1.0 
        System.out.println(o1.toString());// 1.0
   }
/*三目運算符比較基本數據類型,所以在編譯階段自動拆箱為 int 和 double 類型,由於三目運算符要求 表達式2 和 表達式3 類型一致,所以在編譯階段自動類型提升(即 int 自動類型轉換為 double 類型),再自動裝箱為Object,輸出時使用多態調用重寫的toString();即Double包裝類的toString();
其實這裡麵包含一個三元一次運算符和一個賦值運算,因為三目運算符的優先順序高於賦值運算符,所以先運行三目運算符
*/


@Test
	public void test3() {
		Integer i = new Integer(1);
		Integer j = new Integer(1);
		System.out.println(i == j);//false
		
		//Integer內部定義了IntegerCache結構,IntegerCache中定義了Integer[],
		//保存了從-128~127範圍的整數。如果我們使用自動裝箱的方式,給Integer賦值的範圍在
		//-128~127範圍內時,可以直接使用數組中的元素,不用再去new了。目的:提高效率
		
		Integer m = 1;
		Integer n = 1;
		System.out.println(m == n);//true

		Integer x = 128;//相當於new了一個Integer對象
		Integer y = 128;//相當於new了一個Integer對象
		System.out.println(x == y);//false

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

-Advertisement-
Play Games
更多相關文章
  • 繼golang第一天後,今天學習下golang的變數、常量、數據類型和控制流語句。 做過其他編程語言(比如JavaScript,java,python)項目的話,其實很好理解變數、常量、數據類型和控制流。 變數也被稱為“變數”,是反映事物運動變化狀態的量,比如匯率、房貸利率、貸款利率。 常量也被稱“ ...
  • 一、函數名的應用 ​ 函數名的定義和變數的定義幾乎一致,在變數的角度,函數名其實就是一個變數,具有變數的功能:可以賦值;但是作為函數名他也有特殊的功能就是加上()就會執行對應的函數,所以我們可以把函數名當做一個特殊的變數 1、函數名指向的是函數的記憶體地址 ​ 函數名 + ()就可以執行次函數 def ...
  • #知識點 操作系統的啟動知識和中斷的建立與初始化 涉及到Intel 806386寄存器,AT&T彙編,gcc內聯彙編,C函數堆棧,Makefile等知識 筆記主要按照操作系統的啟動和中斷的建立兩個部分來記錄 ##理論課的介紹 ###系統啟動 當CPU剛加電初始化時,CS:IP寄存器根據設定的初始值跳 ...
  • 認識 Spring Cloud Gateway Spring Cloud Gateway 是一款基於 Spring 5,Project Reactor 以及 Spring Boot 2 構建的 API 網關,是 Spring Cloud 微服務生態的主要組件之一。Spring Cloud Gatew ...
  • 方法引用 方法引用是一個更加緊湊,易讀的 Lambda 表達式。 當Lambda表達式中只是執行一個已存在方法調用時使用,且方法引用所使用方法的入參和返回值與lambda表達式實現的函數式介面的入參和返回值一致。 1 幾種類型 1.1 方法引用 對象引用 :: 實例方法名 public class ...
  • 打開eclipse,找到Window菜單項->preferences: 選中並打開Java菜單項,然後依次點擊installed JREs->單擊右邊的jdk->Edit 找到並單擊文件名為rt.jar的文件,然後在你的jdk的安裝目錄下找到並選擇源碼的壓縮包(src.zip),然後一路ok,fin ...
  • 函數式介面 函數式介面指的是:有且僅有一個抽象方法,但是可以有多個非抽象方法的介面(介面預設方法)。 1 @FunctionalInterface註解 該註解標記一個介面為函數式介面。 對於標註了這個註解的介面,編譯器會強制檢查該介面是否有且僅有一個抽象方法。否則會報錯。 即使不使用該註解,只要滿足 ...
  • Lambda表達式 閉包。允許將函數作為一個方法的參數傳遞進方法中。 本質上是一個匿名方法。 理解的時候,可以將Lambda表達式的內容轉化為一個方法去理解。 語法 (paramters) -> expression (parameters) -> { statements; } (int a) - ...
一周排行
    -Advertisement-
    Play Games
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...
  • 1. JUnit 最佳實踐指南 原文: https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ 我假設您瞭解 JUnit 的基礎知識。 如果您沒有基礎知識,請首先閱讀(已針 ...