![](/img/trans.png)
[英]Why is printstacktrace() of exception method does not print to console when ever called?
[英]Why does this print exception?
String bob2 = "3";
System.out.println((int)bob2);
我不確定為什么會導致異常。 誰能解釋? 由於String類型為int,因此可以肯定,但是要確定。
是的,由於類型轉換,您是正確的。 如果您需要將String轉換為int,請使用以下代碼
Integer.parseInt("3");
用這個
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.