原创作品,欢迎阅览
转载注明 csdn.blog.net/loadingsong
Java中数据转换类型分为自动类型转换和强制类型转换,在这里再添加点基本数据类型与字符串转换。其中各类型特点是:
1、自动类型转换
(1)两种类型兼容
(2)目标类型大于源类型
2、强制类型转换
(1)两种类型不兼容
(2) 目标类型小于源类型
(1)通俗点来说,就是自动类型转换必须是类型间能够转换,而且要转换过去的类型必须范围大于现在的类型;强制类型转换就是两种类型间不是通常能理解的转换,需要手动强制性解决,同时要转换过去的类型范围较小。当然,在这里,强调一点,强制类型转换必须是目标类型能够存储的下源类型,要是超出了目标类型的范围,就会丢失部分信息。例:float f = 3.14159f;
int i=(int)f; 输出结果为 3
切记!
这里,看一下转换关系图:
(实线为无损转换、虚线可能丢失精度)
注意:char类型转换
如果char类型向高级类型(一般为整形)转换时,会将转换成其相应的ascii码.
例:char c=‘A’;
int i=c; 那么输出结果就是A对应的ascii码,查表得 65
(2)基本数据类型与字符串转换
1、基本数据类型与字符串拼接就会变成字符串
如:
int a=5;
String b=“10”+a;
2、 字符串转换成基本数据类型
在这里必须强调,只有能够转换成相应的基本数据类型的值才可以转换,如
public static void main(String[] args) {
String s="100";
//String s="100.56";错误
String s2="3.14";
//String s2="1232";错误
String s3="true";
//String s="heihei";错误
int i=Integer.parseInt(s);
float f=Float.parseFloat(s2);
boolean b=Boolean.parseBoolean(s3);
System.out.println(i);
}
(3)数据类型间的运算
技巧:
表达式子中有double类型,结果为double。
表达式中在没有double类型的情况下,如果有float类型,结果为float类型。
表达式中在没有double、 float类型,结果与表达式中的最大数据类型一致。
特例:
byte 和short比较特殊,它们运算后结果会自动提升为int类型。
举例:
byte a=10;
byte b=20;
int c = a+b;
System.out.println(c);、
//输出结果为30 ,如果更改为 byte c = a+b;则报错;
原因是:运算符+ 最低要求是int
所以必须强制转换,byte c = (byte)(a+b);这样正确,输出为30
数据类型间的运算会有许多需要注意的细节,以后还会讲到的。