Java基本类型转换

阅读更多

 

A:自动类型转换

 

 

             以下两条线路可以自动从左到右的类型转换

     byte-short-int-long-float-double

     char-int-long-float-double

 

当把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动类型转换成字符串类型。 

 

 

B:强制类型转换

 

若要想从右边转换成左边的类型,则只能用强制类型转换

其语法格式为:(targetTypevalue,进行强制类型转换时通常会发生溢出,从而引起数据丢失,如:

      int value=233

      byte bytevalue=bytevalue

Int类型是4个字节,占32位:

Int类型的233: 0000 0000 0000 0000 0000 0000 0000 0000 1110 1001  

byte类型233:  0000 0000 0000 0000 0000 0000 0000 0000 1110 1001

可见此时的bytevalue的值是1110 01001

而负数在计算机里是以补码形式存在的,所以:

   bytevalue补码:1110 1001

                   反码:1110 1000

                   原码:1001 0111

 

得到bytevalue的值为:1001 0111 换成十进制:-16+4+2+1=-23

 

通常,字符串类型不能直接转换成基本类型,但可以通过基本类型对应的包装类则可实现,java为八种基本类型都提供的了对应的包装类:

Boolean对应Boolean类,byte对应Byte类,short对应Short

Int对应Intteger long对应Logn类,char对应Character类,float对应Float类,

double对应Double类 

8个包装类提供了一个parseXxxString str)的静态方法用于将字符串转换成基本类型,

String str=45

   int intvalue=Integer.parseIntstr);

C:表达式的自动提升 

当一个算术表达式中包含多种数据类型的的值时,整个算术表达式的数据类型将发生类型自动提升,有如下规则:

1)所有byte型、shortchar型数据将提升为int

2)整个素数表达式的数据类型将提升到和表达式中最高等级操作数同意的类型

一个典型的错误:

   Short  s=5//表达式中s自动提升为int类型,表达式右边类型为int

   s=s-2//s-2int类型,不能把一个int类型赋值给short类型,除非进行强制类型转换

如果表达式中包含字符串,则“+”不再是加法运算符,而是链接运算符

如:“helloJava+8+7 得到的是helloJava87

     7+8+hellJava”得到的是15helloJava

你可能感兴趣的:(java,强制类型转换,包装类,类型自动提升)