Java 的数据类型可以分为三大类:
- 布尔型
- 字符型
- 数值型
数据类型转换可分为三类:
- 简单数据类型之间的转换
- 字符串与其他数据类型之间的转换
- 其他使用数据类型的转换
1、简单数据类型之间的转换:
整型、实型、字符型被认为是简单数据类型
(byte、char)[1字节]——>short[2字节]——>int[4字节]——>long[8字节]——>float[4字节]——>double[8字节]
简单数据类型之间的转换可以分为:
- 低级到高级的自动类型转换
- 高级到低级的强制类型转换
- 包装类过渡类型能够转换
1-1、在自动类型转换中:
低级变量自动转换为高级变量
低级类型char型想高级类型(整型)转换时,会转换为对应的ASCII码值
byte、short、char三种类型是相同级别的,不能相互自动转换,需要使用强制类型转换
short i = 99;
char c = (char)i;//变为ASCII对应的字符
1-2、强制类型转换中:
将高级变量转换为低级变量,需要使用强制类型转换,这种转换可能会导致溢出或者精度的下降
int i = 99;
byte b = (byte) i;
char c = (char) i;
1-3、包装类过渡类型转换:
Java的包装类就是可以直接将简单类型的变量表示为一个类,共有6中包装类
Boolean Character Integer Long Float Double
这6种包装类分别对应了boolean char int long float double;String 和Date 本身就是类,不需要包装类的概念
在进行简单数据类型之间的转换(自动或强制),可以利用包装类进行中间的过度。
一般情况下,首先声明一个变量,任何生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。
例子:float 变为 double
float f1 = 100.00f;
Float F1 = new Float(f1);
Double d1 = F1.doubleValue();
例子:double 变为 int
double d1 = 100.00;
Double D1 = new Double(d1);
int i1 = D1.intValue();
例子:int 变为 double (自动类型转换)
int i = 200;
double d = i;
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数:
Boolean(boolean value)
Character(char value)
Integer(int value)
Long(long value)
Float(float value)
Double(double value)
2、字符串型与其他数据类型的转换
通过查阅类库中各种类提供的成员方法可以看到,几乎从java.lang.object类派生的所有类都提供了toString()方法,即将该类型转换为字符串
例如,Boolean Character Integer Float Double等类的toString()方法用于将逻辑数、字符、整数、浮点数、双精度数转换为字符串
3、将字符型直接作为数值转换为其他数据类型
将字符型变量转换为数值型变量实际上有2中对应关系:
- 将其转换为对应的ASCII码
- 转换关系,例如‘1’就是指数值1,而不是其ASCII码,对于这种转换,可以使用Character的
getNumericValue(char ch)
方法