在此首先列出所有的数据类型:
(1) 整型:byte,short,int ,long
(2) 浮点型:float,double
(3) 字符型:char
(4) 字符串型:String(注意,String不属于基本数据类型)
(5) 布尔型:boolean
以上整理已经按照精度高低进行了排列(如果这个数据类型本身有精度的话)
首先应该明白,同一类型中,低精度可以直接转为高精度的数据类型,比如byte数据类型可以直接使用short数据类型接受,同理,short数据类型可以直接由int数据类型接受。高精度向低精度转换时可以通过强转实现。,所以以下只讨论不同类型的数据间的转换,以及特殊情况。
- 整型之间:
a) byte,short之间的运算会自动转换为int类型,实例如图
事实证明,即使是相同的数据类型之间的计算也是会自动转为int的
b) 特殊情况:+= 和 -=的神奇之处
众所周知,定义变量short s=5;进行加运算 s=s+5;等同于s+=5;可是实际上,s=s+5;报错,这是和上面一样的道理,short,byte的运算带有自动转换,会将运算结果由short会转为int(其实char在参加运算时也是转为int),但是s+=5;不会,如图所示:
头脑风暴:设计者是不是担心运算时会产生溢出?
- 浮点型
a) float和double进行运算时,会自动转为double(低精度向高精度自动转换)
b) float和double进行运算时,会自动转为double(低精度向高精度自动转换),依此可以推出
i. float在与比他本身精度低的数据类型(所有的整型数据:byte,short,int,long,整数常量)运算时,结果是float类型的
ii. double与所有的整型数据类型和float类型的运算时结果都是double。原理同上。
c) 把float或者double类型转为int,short,byte时会损失精度,他会把小数点后面的数字直接省略,不会四舍五入。
d) 一个奇怪的问题,如图
箭头所指的数字小于等于5,Double输出小数点后16位
箭头所指的数字大于等于5,Double输出小数点后15位
Double类型有可能会出现精度丢失,所以在项目中应该尽量避免使用double类型的数据进行计算。
- 字符型
a) 字符类型转为整数类型时,是转换为他的ASCII码值。
b) 字符类型的数字如果想要转为整数类型参加计算(字符代表的实际数字),可以减去’0’。
原理:数字对应的ASCII码是连贯的
c) 字符转为浮点型原理不在赘述,字符-int-浮点。
- String只能转为字符数组,可以使用toCharArray()方法
也可以使用charAt()方法
- Int 转为String有两种方法: