語法糖-自動拆裝箱的陷阱
Integer a= 1; Integer b =2; Integer c= 3; Integer d = 3; Integer e = 321; Integer f = 321; Long g = 3L; System.out.println(c==d); System.out.println(e==f); System.out.println(c == (a+b)); System.out.println(c.equals(a+b)); System.out.println(g == (a+b)); System.out.println(g.equals(a+b));
執行結果為:
true
false
true
true
true
false
前兩個是因為在自動裝箱時對於值從-128到127之間的值,它們被裝箱為Integer物件後,會存在記憶體中被重用
中間兩個是因為包裝類的“==”運算在不遇到算數運算的情況下不會自動拆箱
後兩個是因為equals()方法不處理型別的轉換問題。
相關推薦
語法糖-自動拆裝箱的陷阱
Integer a= 1; Integer b =2; Integer c= 3; Integer d = 3; Integer e = 321; Integer f = 321
關於自動拆裝箱時的陷阱
1 /* 2 * 自動裝箱的陷阱 3 * 1、兩個包裝類進行比較時,包裝類的"=="運算在不遇到算術運算的情況下不會自動拆箱,如下例若判斷c==g則會報編譯錯誤; 4 * 2、兩個包裝類進行比較時, 包裝類的"equals()"方法不處理資料轉型的關係,如下例的g.equals(a+b)為
自動拆裝箱,string和基本數據類型的相互轉換
integer sta intval stat ger main package bsp div 1 package com.pang.demo1; 2 3 public class Demo01 { 4 public static void main(
關於java的自動拆裝箱若幹細節問題
pack 參數 prim gets 調用 store 成對 rac icon 一、首先需要了解的幾個前提: 1、自動裝箱過程是通過調用valueOf方法實現(如Integer.valueOf(10)),而拆箱過程是通過調用包裝器的 xxxValue方法實現(如Integer
Java包裝類的自動拆裝箱
true space cells 報錯 div ola ack 不同 text 題目: Integer i = 42; Long l = 42l; Double d = 42.0; 下面為true的是 A.(i == l) B.(i
Java支持的數據類型有哪些?什麽是自動拆裝箱?
一個 之間 包裝類 code char 數據 ava 什麽是 布爾型 Java有8種基本數據類型: 整數型:byte(8)、short(16)、int(32)、long(64) 浮點類型:float(32)、double(64) 字符型:char(16位的Unicode字符
一文讀懂什麽是Java中的自動拆裝箱
.com 空指針異常 http har 三目運算 容器 ava eof 關系 基本數據類型 基本類型,或者叫做內置類型,是Java中不同於類(Class)的特殊類型。它們是我們編程中使用最頻繁的類型。 Java是一種強類型語言,第一次申明變量必須說明數據類型,第一次變量
java自動拆裝箱,介面和抽象類
1.Java支援的資料型別有哪些?什麼是自動拆裝箱? Java語言支援的8中基本資料型別是: byte short int long float double boolean char 自動裝箱是Java編譯器在基本資料型別和對應的物件包裝型別之間做的一個轉化。比如:把int轉化成Integ
Java自動拆裝箱(Autoboxing and unboxing)學習
在學習併發的過程中,用“Boolean bool = true”的自動裝箱方式初始化了兩個物件鎖去鎖兩塊程式碼,結果執行的時候出現了競爭等待,除錯了一下發現兩個鎖變數指向的是同一個物件,由此可見我對自動拆裝箱的機制想的太簡單了,查了一下,發現這個機制還挺細節,那就記錄一下: 本文主要有以下幾個方
Java的自動拆裝箱
基本資料型別 基本型別,或者叫做內建型別,是Java中不同於類(Class)的特殊型別。它們是我們程式設計中使用最頻繁的型別。 Java是一種強型別語言,第一次申明變數必須說明資料型別,第一次變數賦值稱為變數的初始化。 Java基本型別共有八種,基本型別可以分為三類: 字
慎用自動拆裝箱
先上程式碼: public static void main(String[] args) throws InterruptedException { Integer z = null; printf(z); } public static vo
什麼是Java中的自動拆裝箱
本文主要介紹Java中的自動拆箱與自動裝箱的有關知識。 1、基本資料型別 基本型別,或者叫做內建型別,是Java中不同於類(Class)的特殊型別。它們是我們程式設計中使用最頻繁的型別。 Java是一種強型別語言,第一次申明變數必須說明資料型別,第
java學習記錄-自動拆裝箱
自動拆裝箱:Java 編譯器把原始型別自動轉換為封裝類的過程稱為自動裝箱(autoboxing),這相當於呼叫 valueOf 方法 Integer a = 10; Integer b = Integer.valueOf(10); System.out.println(a == b); // tru
自動拆裝箱-Integer的快取機制
Integer是有小資料快取的機制的,那麼第一個是否應該是true呢? 迴歸下第一個: Integer num1 = new Integer(100); Integer num2 = new Integer(100
Java學習筆記——包裝類及自動拆裝箱
在Java中資料分為兩種型別:1.基本資料型別 2.引用資料型別 基本資料型別: int、double、float、long、byte、boolean、char、short 包裝類就是7種基本資料型別對應封裝起來的類,Integer、Double、Flo
一文讀懂什麼是Java中的自動拆裝箱
本文主要介紹Java中的自動拆箱與自動裝箱的有關知識。 一、基本資料型別 基本型別,或者叫做內建型別,是Java中不同於類(Class)的特殊型別。它們是我們程式設計中使用最頻繁的型別。 Java是一種強型別語言,第一次申明變數必須說明資料型別,第一次變數賦值稱為變
Java基礎---靜態匯入+增強for迴圈+可變引數+自動拆裝箱+列舉
靜態匯入 作用:簡化書寫 格式: import static 包名.類名.靜態成員; import static 包名.類名.*; 注意:僅對於一個類的靜態成員起作用 靜態匯入的成員與本類的靜態成員同名時,優先本類靜態成員,
探究Java自動拆裝箱與Cache
目錄 什麼是拆裝箱 JVM是如何實現拆裝箱 聊聊IntegerCache 其他包裝型別的Cache 什麼是拆裝箱 拆裝箱是Java1.5引入的新特性,它是基本資料型別與包裝型別的互相轉化。 裝箱:基本資料型別 => 包裝
數字和字串的轉換,自動拆裝箱
把數字轉成字串 1.+""; 2.valueOf(); 3.toString(); 把字串轉成數字: 1.intValue(); 2.parse(); 自動裝箱:將基本型別自動包裝成對應的引用型別 自動拆箱:將包裝型別自動轉成對應的基本型別 //手動裝箱 int nu
Integer的自動拆裝箱問題
@Test public void test1(){ Integer aInteger=100; Integer bInteger=100; System.out.println(aInteger==bInteger)