繁体   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