Java语言,要求严格声明变量的类型。数据类型的转换是在所赋值的数据的数值类型和被变量的数据类型不一致时发生的,它需要从一种数据类型转换成另一种数据类型。
在Java中,对于除了boolean类型以外的7种基本类型,在把某个类型的值直接赋给另外一种类型的变量时,这种方式成为基本类型的转换。
一般情况下,基本数据类型转化为自动类型转换(隐式转换)和强制类型转换(显示转换)两种。
1、自动类型转换
自动类型转化必须是在两个兼容的数据类型之间进行,并且必须是由低精度类型向高精度类型转换。整数类型、浮点型和字符型数据可以进行混合运算。在运算过程中,不同类型的数据会自动转换为同一类型,然后进行运算。
自动类型转换的规则:
(1)数值型之间的转换:byte-->short-->int-->long-->float-->double
(2)字符型转换为整形:char-->int
以上类型从左到右依次转换,最终转换为同一数据类型。
public class TestType {public static void main(String[] args) {int i = 20;float f = 12.5f;char c = 'A';System.out.println("i + f = " + (i + f));System.out.println("i + c = " + (i + c));Object type1 = i + f;Object type2 = i + c;System.out.println("(i + f)运算后的类型是: " + type1.getClass()); // 输出对象的类型System.out.println("(i + c)运算后的类型是: " + type2.getClass()); // 输出对象的类型}
}
上面代码中,声明了int类型i,float类型变量f,char类型变量a,并对它们初始化。对变量i和f进行加法运算,Java首先将int类型的变量i转化为float型,然后相加运算,把运算结果赋给变量type1;对变量i和c进行相加运算,将字符型先转换为整型,然后对i和c的值进行加法运算。
上面代码运算结果如下:
知识点:
Java中,char型即字符型,使用char关键字声明,它占用16位(2个字节)的内存空间,用来存储单个字符。char类型的范围是0~65536,没有负值。
在为char型的变量赋值时,可以使用单引号或者数字。char型使用两个字节的Unicode编码表示,Unicode定义了一个完全国际化的字符集,能够表示全部人类语言中的所有字符。
定义char型变量:
char c = 'A';
char c = 65;
上面两行代码是一样的,都是定义一个char型变量,并赋值。
在Java中,char常被当作整型类型,这意味着char和int、short、long以及byte属于同一分类。但是,由于char类型的主要用途是表示Unicode字符,因此,通常作为一个单独的分类。若想得到0~65536之间的数所代表的Unicode表中的相应位置上的字符,必须使用char型进行显式转换。