在Java中将字符串类型转换为整数类型

时间:2011-01-21 01:52:34

标签: java

我知道这个

Integer.parseInt(args[0]);

虽然在其他一些代码中我注意到了这个counts[(int) B.get(file,rank)];,其中(int)应该将返回的值从B.get转换为整数。

我可以理解Integer.parseInt语句的有效性,但第二个语句来自哪里,是否是正确的Java代码?

3 个答案:

答案 0 :(得分:4)

第二个是cast;它不会将一种对象转换为另一种对象,但它允许您更改使用该对象的形式。

假设我有Mammal类型的对象,但我碰巧知道这个特定的实例是Cat。我可以(Cat)myMammal并参考Cat可能拥有的方法和属性。

毋庸置疑,这不是将字符串转换为int的方法。在您给出的示例中,您将获取一个未确定类型的对象(get的输出)并断言它是一个int。只有当它真的是一个int时才会起作用。

如果要将字符串转换为int,则必须解析。

答案 1 :(得分:1)

Integer.parseInt()接受一个字符串并将其转换为int。

使用(int)只是一个强制转换,它不适用于字符串。通过告诉编译器您知道您所拥有的对象的转换已经是该特定类型。编译器信任,你 - 如果你弄错了,你将面临一个ClassCastException(尽管编译器会嘲笑你,如果对象不属于同一个继承层次结构,那么转换就无法工作。)< / p>

在基元的情况下,可以使用转换将基元从一种类型降级为另一种类型,因此通过删除小数组件将双重转换为int。

答案 2 :(得分:1)

恕我直言,这是一个无意义的,与自动装箱一起投射到整数组合会很好,但是我知道没有一个例子,当它编译时没有警告且没有错误。

final Map<String, Integer> m1 = new HashMap<String, Integer>();
m1.put("a", 42); // autoboxing
final int n = (int) m1.get(42); // WARNING: Unnecessary cast from Integer to int


final Map<String, Long> m2 = new HashMap<String, Long>();
m2.put("a", 43L); // autoboxing
final int n2 = (int) (long) m2.get(42); // fine
final int n2a = (int) m2.get(42); // ERROR: Cannot cast from Long to int

final Map<String, Object> m3 = new HashMap<String, Object>();
m3.put("a", 43); // autoboxing
final int n3 = (Integer) m3.get(42); // fine
final int n3a = (int) m3.get(42); // ERROR: Cannot cast from Object to int

也许这是对 Integer 的演员?