文章目录
1、什么是类型转换?
在java中类型转换是一个非常重要的知识点。因为java是一门强类型语言,所以在数据运算中会存在类型转换,首先我们需要知道java中的类型转换一共分为两类:自动类型转换和强制类型转换。
2、掌握常见数据类型的范围大小
如上图,表示的就是java中常见的7种基本类型之间范围关系,这7种基本数据类型存在类型转换。(可能会有人问为什么没有String类型,因为String类型不属于基本数据类型,它是jdk中封装好的一个类,数据转换时需要调用String类中相应的方法,String类型的转换后面我会单独发布一个文章去详解)
3、自动类型转换
3.1 int转换为double
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。
例如我们定义了一个double类型的变量num 并把它赋值为10,并把它输出到控制台,那么它输出的结果为多少呢?10还是10.0?
public class Demo3 {
public static void main(String[] args) {
double num=10;
System.out.println(num);
}
}
输出结果
很明显,因为num定义的就是double类型,int类型的int会被转型到double类型,可能会有同学疑惑并没有给它进行转型操作,为什么会被转换为double类型,这是因为int类型的范围是要比double类型的范围小的(由上图7种基本类型转换图可以得出)这个转换操作是由系统完成的,也就是JVM(java虚拟机)进行的,我们可以不用过多纠结这个。只需要记住小范围的数据类型转换为大范围数据类型就会自动转换,是不需要我们去操作的。
3.2 char转换为int类型
在7种基本数据类型转换中,有一个类型转换比较特殊,就是char类型与int类型的转换,是根据ASCII码表进行转换的。下面就是我在百度图库找到的ASCII码。
我们定义一个int类型的a,并且赋值一个char类型的'a',那么结果为多少呢?照着上面的ASCII码表,结果应该是97。
public class Demo3 {
public static void main(String[] args) {
int a='a';
System.out.println(a);
}
}
输出结果
4、强制类型转换
自动类型转换的概念明白以后,强制类型转换的概念与它相反,强制类型转换是大范围的数据类型转为小范围的数据类型时进行强制类型转换,需要自己去操作,这时系统就不会帮助我们去完成这个操作了。
4.1、强制类型转换格式
目标数据类型 变量名 = (目标数据类型)值或者变量;
例如我们定义了一个两个byte类型的变量a和b,我们需要让它们进行相加操作。
public class Demo3 {
public static void main(String[] args) {
byte a = 3;
byte b = 4;
}
}
我们让它们进行相加并赋值给byte类型的c变量,这时我们会发现,它尽然报错了,提示错误是需要定义一个int类型。
当我们把byte类型的c改为int类型的c时,就没有报错了,这是为什么呢?因为a+b的时候就已经转为了int类型,a+b=7嘛,7肯定是个int类型,byte类型转换为int, 小转大,自动类型转换,所以int c=a+b才不会报错。
而byte c =a+b报错是因为int类型需要转换为byte类型,就是大转小,需要加上强制类型转换的标志。 如下图,就没有了报错。
5、注意事项
1、 boolean类型不能与其他基本数据类型相互转换。
2、整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。
欢迎大家在评论区进行补充,指出我的不足之处。感谢大家的浏览。