導航:首頁 > 編程語言 > java自動拆箱

java自動拆箱

發布時間:2023-01-03 16:44:07

java 包裝類 自動裝箱問題

==比的是地址。byte取值范圍的值(-127~128)指向的是同一個地址,a和c都是110,也就是說a和c指向同一個地址,所以相等。而b明顯不同,new Integer是在內存中重新開辟了一塊空間。

Ⅱ Java在方法中的for循環里寫return是結束循環還是結束方法

return是跳出方法,break是結束循環,continue是結束這一次循環跳到下一次循環

Ⅲ java 什麼是拆箱和裝箱,拆箱和裝箱 嘛用啊

Java中的包裝類 裝箱和拆箱
在java中,數據類型總共可分為兩大種,基本數據類型(值類型)和類類型(引用數據類型)。基本類型的數據不是對象,不能作為對象調用其toString()、hashCode()、getClass()、equals()等等方法。
 所以在java中,針對8種基本數據類型,提供了針對每個基本數據類型的包裝類。如下:
INDEX 基本數據類型 包裝類
1 int Integer
2 char Character
3 float Float
4 double Double
5 byte Byte
6 short Short
7 long Long
8 boolean Boolean
所謂裝箱,就是把基本類型用它們相對應的引用類型包起來,使它們可以具有對象的特質,如我們可以把int型包裝成Integer類的對象,或者把double包裝成Double,等等。
 所謂拆箱,就是跟裝箱的方向相反,將Integer及Double這樣的引用類型的對象重新簡化為值類型的數據。
 //JDK1.5 之前使用手動方式進行裝箱 和拆箱的 操作
public class IntegerDemo
{
public static void main (String []agrs)
{
int i=10;
Integer j=new Integer(i); //手動裝箱操作
int i1=j.intValue();//手動拆箱操作
System.out.println(i1*i1);
}
}; //output:100

//JDK1.5之後可自動進行的裝箱和拆箱的操作,比較方便
public class IntegerDemo02
{
public static void main (String []agrs)
{
int i=10
Integer j=i;
int k=j;
System.out.println(++k);
}
}; //output:11
 
包裝類的另外一個比較有用的是可以將String 字元串類型轉換為相應的基本數據類型。下面以將String轉為int為例:
public class IntegerDemo04
{
public static void main (String[] args)
{
String str="1500";
try
{
int i=Integer.parseInt(str);
System.out.println(++i);
}
catch (Exception e)
{
e.printStackTrace(); //列印異常信息
}
}
};// output: 1501
 如果在上述方法中str="15er00";則在調用parseInt方法時候會產生NumberFormatException異常,見JDK API中對該方法的描述:
public static int parseInt(String s) throws NumberFormatException

將字元串參數作為有符號的十進制整數進行解析。除了第一個字元可以是用來表示負值的 ASCII 減號 '-' ('\u002D') 外,字元串中的字元都必須是十進制數字。返回得到的整數值,就好像將該參數和基數 10 作為參數賦予 parseInt(java.lang.String, int) 方法一樣。

參數:
s - 包含要解析的 int 表示形式的 String。
返回:
用十進制參數表示的整數值。
拋出:
NumberFormatException - 如果字元串不包含可解析的整數。
  總結在包裝類中將String轉換為包裝類所對應的基本數據類型的方法如下,所有的方法都將拋出NumberFormatException異常,需要在調用時候使用try ..catch 進行捕獲
 
index 包裝類 返回的基本數據類型 方法名
1 Integer int static int Integer.parseInt(Sting s)
2 Character char static char Character.parseChar(String s)
3 Float float static float Float.parseFloat(String s)
4 Dobule double static double Double.parseDouble(String s)
5 Byte byte static byte Byte.parseByte(String s)
6 Short short static short Short.parseShort(String s)
7 Long long static long Long.parseLong(String s)
8 Boolean boolean static boolean Boolean.parseBoolean(String s)
 
類似的一個方法為 parseXXX(String s,int radix),對於Integer包裝類,這個radix表示進制. parseInt(String s)默認為十進制。 其他包裝類的radix參數意義,請參見API文檔

Ⅳ 自動裝箱和自動拆箱有什麼用

Integer a=1;//這就是一個自動裝箱,如果沒有自動裝箱的話,需要這樣Integer a=new Integer(1)
int b=a;//這就是一個自動拆箱,如果沒有自動拆箱的話,需要這樣:int b=a.intValue()

這樣就能看出自動裝箱和自動拆箱是簡化了基本數據類型和相對應對象的轉化步驟

Ⅳ java中字元串怎麼轉成數字類型

這個操作需要兩步,第一步用正則表達式找出其中的數字,第二步再從String轉到int。
String中有個方法replaceAll(String
regex,
String
replacement)
,具體到你現在的需要就是用空(「」)將字元串中的非數字的表達式全部替換掉,這樣就留下了數字串,然後用int的包裝類的方法轉換:Integer.parseInt(String
str)

Ⅵ 經典面試題:Integer類型 ==比較問題

在聊到面試題之前,需要先搞清楚幾個概念。

自動裝箱是Java編譯器在基本數據類型和對應的對象包裝類型之間的一個轉化。如int轉化為Integer,long轉化為Long等。而自動拆箱則相反,是對象包裝類型轉化成基本數據類型。

num 是Integer類型,而2是int類型,Integer與int並無繼承關系,理論上應報錯,但因為自動裝箱機制存在,Java自動將int轉化為Integer類型,即

valueOf()方法返回一個Integer類型值,並將其賦值給變數num。這就是int的自動裝箱。

位元組是存儲容量的基本單位,字元是數字,字母,漢字以及其他語言的各種符號。 1 位元組=8 個二進制單位:一個一個字元由一個位元組或多個位元組的二進制單位組成。

輸出為false。
由於Integer變數是對Integer對象的引用,所以兩個通過new生成的Integer對象永遠是不相等的。

輸出為true。
Integer變數與int比較時,只要值相等,則結果為true。因為包裝類Integer與int比較時,會自動拆箱為int,然後進行比較,故而最後變成了兩個int變數在比較。

輸出為false。
非new生成的Integer變數和new Integer()生成的變數比較時,結果為false。因為非new生成的Integer變數指向的是java常量池中的對象,而new Integer()生成的變數指向的是堆中新建的對象,兩者的內存地址不同。

第一個輸出的是true,第二個是false。
兩個非new出來的Integer對象,如果范圍在-127~128之間,則為true,否則為false。
Integer g =100。通過自動裝箱機制轉化為Integer g = Integer.valueOf(100)。

Integer.valueOf()源碼

IntegerCache的源碼

整個工作過程就是:Integer.class在裝載(Java虛擬機啟動)時,其內部類型IntegerCache的static塊即開始執行,實例化並暫存數值在-128到127之間的Integer類型對象。當自動裝箱int型值在-128到127之間時,即直接返回IntegerCache中暫存的Integer類型對象。

Ⅶ java裡面打包與解包的問題

-128到127是一個內存池中,在int定義時開辟了該片內存空間,所有的int型的數據都會在這片內存中取值,所以,-128到127比較都是true,不在這個范圍會另外新開辟內存空間,這樣,他們指向的地址就是不一致的。
你說的打包和解綁其實在java中叫自動拆箱和裝箱,更形象,Integer是對象類型的,int是簡單類型,Integer在網路傳輸時不會出現異常,Integer是對象類型,默認是null值,符合我們的要求,在轉換過程中又會自動轉換

Ⅷ 應屆生面試Java相關崗位可能會被問到哪些技術問題

常見的Java問題

1.什麼是Java虛擬機?為什麼Java被稱作是「平台無關的編程語言」?

Java虛擬機是一個可以執行Java位元組碼的虛擬機進程。Java源文件被編譯成能被Java虛擬機執行的位元組碼文件。

Java被設計成允許應用程序可以運行在任意的平台,而不需要程序員為每一個平台單獨重寫或者是重新編譯。Java虛擬機讓這個變為可能,因為它知道底層硬體平台的指令長度和其他特性。

2.JDK和JRE的區別是什麼?

Java運行時環境(JRE)是將要執行Java程序的Java虛擬機。它同時也包含了執行applet需要的瀏覽器插件。Java開發工具包(JDK)是完整的Java軟體開發包,包含了JRE,編譯器和其他的工具(比如:JavaDoc,Java調試器),可以讓開發者開發、編譯、執行Java應用程序。

3.」static」關鍵字是什麼意思?Java中是否可以覆蓋(override)一個private或者是static的方法?

「static」關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的實例變數的情況下被訪問。
Java中static方法不能被覆蓋,因為方法覆蓋是基於運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,所以概念上不適用。

4.是否可以在static環境中訪問非static變數?

static變數在Java中是屬於類的,它在所有的實例中的值是一樣的。當類被Java虛擬機載入的時候,會對static變數進行初始化。如果你的代碼嘗試不用實例來訪問非static的變數,編譯器會報錯,因為這些變數還沒有被創建出來,還沒有跟任何實例關聯上。

5.Java支持的數據類型有哪些?什麼是自動拆裝箱?

Java語言支持的8中基本數據類型是:

Ⅸ java 中怎樣將 bytes 轉換為 long 類型

方法有以下三種:

1、不藉助其他任何已經有的類,直接進行轉換。

2、藉助java.nio.ByteBuffer實現,只要將byte[]轉換為ByteBuffer就可以實現所有primitive類型的數據讀取。

3、藉助java.io.DataInputStream實現,只要將byte[]轉換為DataInputStream就可以實現所有primitive類型的數據讀取。

Ⅹ java把int型的對象轉換成int型變數

int是java裡面的八種基本類型之一,不會是什麼對象。
其他7種:byte,boolean,short,long,float,double,char。
不知道你想表達什麼意思,你的意思是把整型對象(Integer)轉成int型變數嗎?
給你一個Integer 和 int直接的轉換:(這里我就不初始化了)
int i;Integer integer;
integer = i;(int型向Integer jvm會自動給你轉)
i = (int)integer;(Integer向int 需要你強轉,jvm不會自動給你轉)

閱讀全文

與java自動拆箱相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:142
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:732
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:301
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:141
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:890
app轉賬是什麼 瀏覽:163