簡體   English   中英

為什么會出現此打印異常?

[英]Why does this print exception?

String bob2 = "3"; 
System.out.println((int)bob2);

我不確定為什么會導致異常。 誰能解釋? 由於String類型為int,因此可以肯定,但是要確定。

是的,由於類型轉換,您是正確的。 如果您需要將String轉換為int,請使用以下代碼

Integer.parseInt("3");

你是對的。

您不能只字符串轉換為int。

您應該使用Integer.parseInt()進行 轉換

用這個

Integer.valueOf("3");

要么

Integer.parseInt("3");

在Java中,無論何時嘗試將實體的類型更改為另一種,兩種類型都應具有某種關系。 就像您試圖將sub class對象強制轉換為super class ,它將可以正常工作。 但是,如果您嘗試將一個Person object與一個Lion object進行比較,那么這種比較就沒有什么意義了,轉換的邏輯也是如此。 我們無法將Person對象投射到Lion對象。

在您的代碼中, bob是String類型,並且您試圖將其強制轉換為int而在Java中,String和Integer都沒有任何關系。 這就是Java拋出異常, Class Cast Exception的原因,我猜想,當比較不同類型的對象時會引發這種Class Cast Exception

但是Integer類中的parseInt(String arg)方法提供了一個將數字String轉換為Integer的選項,前提是該參數是根據Java標准的合格Integer。

例子:-

String numericString = "1234";
int numberConverted  = Integer.parseInt(numericString);
System.out.println(numberConverted);

您也可以嘗試使用這些方法,這些方法可以在使用此方法之前告訴您注意事項

int numberConverted  = Integer.parseInt("1234r");
int numberConverted  = Integer.parseInt("1234.56");
int numberConverted  = Integer.parseInt("11111111111111111111111111111");

您不能將String強制轉換為Integer。 更改:

System.out.println((int)bob2);

至:

System.out.println(Integer.parseInt(bob2));

它將根據bob2變量提供的String創建一個Integer值。 如果要存儲原始int而不是Integer則還可以創建對int變量的引用,例如:

int intBob2 = Integer.parseInt(bob2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM