use*_*818 92 java string integer casting
我发现了一些奇怪的异常:
java.lang.ClassCastException: java.lang.Integer
cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)
怎么可能?每个对象都可以转换为String,不是吗?
代码是:
String myString = (String) myIntegerObject;
Run Code Online (Sandbox Code Playgroud)
谢谢.
Bhu*_*han 147
为什么这是不可能的:
因为String和Integer不在同一个Object层次结构中.
Object
/ \
/ \
String Integer
Run Code Online (Sandbox Code Playgroud)
您正在尝试的转换只有在它们处于同一层次结构时才有效,例如
Object
/
/
A
/
/
B
Run Code Online (Sandbox Code Playgroud)
在这种情况下,(A) objB或者(Object) objB还是(Object) objA会正常工作.
因此,正如其他人已经提到的,要将整数转换为字符串使用:
String.valueOf(integer),或Integer.toString(integer)原始的,
要么
Integer.toString() 对象.
Pet*_*hev 45
不,Integer并且String是不同的类型.要将整数转换为字符串,请使用:String.valueOf(integer),或Integer.toString(integer)原语或Integer.toString()对象.
DRi*_*FTy 20
对于int类型使用:
int myInteger = 1;
String myString = Integer.toString(myInteger);
Run Code Online (Sandbox Code Playgroud)
对于Integer类型使用:
Integer myIntegerObject = new Integer(1);
String myString = myIntegerObject.toString();
Run Code Online (Sandbox Code Playgroud)
java.lang.Object不可以String.每个物体都可以铸造成一个,而不是一个.如果你想要一个任何对象的字符串表示,你必须调用该toString()方法; 这是不一样的铸造对象到字符串.
你不能明确地将任何东西强制转换String为非String.你应该使用:
"" + myInt;
Run Code Online (Sandbox Code Playgroud)
要么:
Integer.toString(myInt);
Run Code Online (Sandbox Code Playgroud)
要么:
String.valueOf(myInt);
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二种形式,但我认为这是个人选择.
编辑确定,这就是为什么我更喜欢第二种形式.第一种形式在编译时可以实例化StringBuffer(在Java 1.4中)或StringBuilder在1.5中; 还有一件事要收集垃圾.据我所知,编译器没有对此进行优化.第二种形式也有一个模拟,Integer.toString(myInt, radix)它允许你指定你是否想要十六进制,八进制等.如果你想在你的代码中保持一致(纯粹在美学上,我猜)第二种形式可以在更多的地方使用.
编辑2我认为你的意思是你的整数是一个int而不是一个Integer.如果它已经是Integer,只需使用toString()它就可以完成.
可以使用以下方法将对象转换为字符串toString():
String myString = myIntegerObject.toString();
Run Code Online (Sandbox Code Playgroud)
关于铸造没有规则。为了使投射正常工作,对象实际上必须是您要投射到的类型。
| 归档时间: |
|
| 查看次数: |
157558 次 |
| 最近记录: |