Java类型转换知识点

  • 基本类型:从左到右转换规则表
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

你可能感兴趣的:(Java类型转换知识点)