- 基本类型:从左到右转换规则表
char | byte | short | int | long | float | double | |
---|---|---|---|---|---|---|---|
char | 显 | 显 | 隐 | 隐 | 隐 | 隐 | |
byte | 显 | 隐 | 隐 | 隐 | 隐 | 隐 | |
short | 显 | 显 | 隐 | 隐 | 隐 | 隐 | |
int | 显 | 显 | 显 | 隐 | 隐 | 隐 | |
long | 显 | 显 | 显 | 显 | 隐 | 隐 | |
float | 显 | 显 | 显 | 显 | 显 | 隐 | |
double | 显 | 显 | 显 | 显 | 显 | 显 |
- String 转 Integer / int
Integer.parseInt() return a primitive int.
Integer.valueOf() returns an new Integer() object.
NumberFormatException: string does not contain a parsable integer
- Integer / int 转 String
Integer.toString(int)
String.valueOf(int)
new Integer(int).toString()
String.format()
StringBuffer or StringBuilder
强制类型转换
基本类型:
- 长整型转换为短整形,是直接截取低位的值,不保留符号位
- 短整形可以直接转换为长整型,高位补0
- 举例:int是32位的,short是int的低16位,char是int的最低8位
@Test
void should_truncate() {
final int negativeInteger = 0x7fff_ffff;
final short negativeSmallInteger = (short) negativeInteger;
assertTrue(negativeInteger > 0);
assertTrue(negativeSmallInteger < 0);
}
引用类型:
- 子类可以隐示转换成父类
- 父类可以强制转换成子类,语法没有错误,但是运行时有错
- 举例:通过转换成Object,再进行转换就不会报错:
Object value = "string";
String values = (String) new Object();
Number ->Object -> Integer ( Integer extends Number)
- 只有在同一继承链上才可以转换,否则不能转换
- 举例:Integer 和 Short 不能进行转换,因为 Integer 继承 Number,Short 继承Number,Integer 和 Short 不在同一条继承链上
Number numberValue = 1;
Object value = numberValue;
Integer integerValue = (Integer) value;
int 转 string 参考
Convert using Integer.toString(int)
Convert using String.valueOf(int)
Convert using new Integer(int).toString()
Convert using String.format()
Convert using DecimalFormat
Convert using StringBuffer or StringBuilder
网友评论