前言
类型转换是计算机中常见的操作,比如输入输出、数据相互之间的比较 等等,本篇就是介绍8种基本数据类型间相互转换的。
一、什么是数据类型的转换?
数据类型转换就是把一种数据类型转换成其他的数据类型,如:在计算1+2.3=3.2中,就是int类型转换为float类型,再进行运算的。
二、数据类型的转换方式
1.自动数据类型转换
自动类型转换,是指系统内部自动进行的数据类型转换,用户无需添加任何相关操作就能自动完成的数据类型转换方式。一般是指由小到大,如:整型中按字节长度byte—>short—>int—>long,浮点型的float—>double等。
1.整型间自动数据类型转换
1.byte—>short、int、long
代码如下(示例):
byte a = 10;
short b = a; // b = 10;
//byte c = b; 此时会报错,因为short类型长度为2字节,大于byte的1字节
int c = a; // c = 10
long d = a; // d = 10
//同样不可以反过来写byte e = c;原因同上
2.short—>int、long
代码如下(示例):
short a = 10;
int b = a; // b = 10
long c = a; // c = 10
//同样不可以反过来写,原因是int,long类型的长度大于short
3.int—>long
代码如下(示例):
int a = 10;
long b = a; // b = 10
//同样不可以反过来写,原因是long类型的长度大于int
2.浮点型间自动数据类型转换
1.float—>double
代码如下(示例):
float a = 10.0f;
double b = a; // b = 10.0
//float c = b; 此时会报错,因为double类型的数据精度大于float
3.整型—>浮点型自动数据类型转换
整型—>浮点型数据类型自动转换就是指系统自动进行的把整型的数据转换为浮点型数据再进行数据处理的过程,最典型的例子就是整数加小数得出的结果是小数,如:2 + 3.6 = 5.6。
代码如下(示例):
int i = 5;
float a = 10.0f;
float b = a + i; // b = 15.0
//int b = a + i; 此时会报错,因为float类型的数据精度大于int
这里只给出了int类型自动转化为float类型的例子,其他的整型的数据类型与float类型间的自动类型转换的原理是一样的,就只是把数据类型从int改为byte,short,long等,整型与double类型的自动数据类型转换也是如此,就不一一列举出来了。
2.强制数据类型转换
强制数据类型转换,指的是系统无法自动进行,要靠规定的语法来实现的数据类型转换过程。
语法格式为:
需要的数据类型 变量名 = (需要的数据类型) 被转换的数据类型的数据
1.整型间强制数据类型转换
1.short、int、long—>byte
代码如下(示例):
byte a = 10;
short b = a; // b = 10;
//byte c = b; 此时会报错,因为short类型长度为2字节,大于byte的1字节
byte c = (byte)b; // c = 10
//此时,先进行强制数据类型转换,把short类型的b强制转换为byte,再赋值给c
其他的情况与此类似,不一一列举。
2.浮点型间强制数据类型转换
1.double—>float
代码如下(示例):
double a = 10.0;
//float b = a; 报错
float c = (float)a; // c = 10.0
//此时,先进行强制数据类型转换,把double类型的a强制转换为float类型,再赋值给c
3.整型与浮点型间强制数据类型转换
1.float—>int
代码如下(示例):
float a = 10.5;
//int b = a; 报错
int c = (int)a; //此时,先进行强制数据类型转换,把float类型的a强制转换为int类型,再赋值给c
2.double—>int
代码如下(示例):
double a = 10.5;
//int b = a; 报错
int c = (int)a; //此时,先进行强制数据类型转换,把double类型的a强制转换为int类型,再赋值给c
这一种情况与上面的float相似
浮点型转换为其他整型的情况与此类似,不一一列举。
3.char与int间数据类型转换
字符型char与int类型间有着单独的编码表使得每一个字符与一个整数对应,所以我单独拿出来说。
1.char自动转换为int
代码如下(示例):
char a = 'c';
int b = 10;
System.out.println((a+b)); //109
//因为小写字母c在ASCII编码表中对应的数为99,所以,做加法运算时,用的是c对应的数字,可以理解为系统内部进行了自动数据类型转换
2.强制数据类型转换
代码如下(示例):