![](/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.