上两篇文章,大家了解到了常量与变量。以此为基础,我们引入了数据和数据类型的概念,今天我就和大家一起来更加深入的了解一下数据之间的类型转换吧。
还是这张图,我们可以看到,各个类型之间,每个关键字所占用得内容空间大小也是各不相同的,而在Java中,一些数据类型是可以进行转换的。
一、自动类型转换
在Java中,把数据范围更小的数值或变量赋给数据范围更大的变量,这种类型的转换是自动的,例:
double a = 5;
System.out.println(a);
将整数5赋给double类型的a,输出a,将会输出5.0;
二、强制类型转换
但如果我们需要把数据范围更大的数值或变量赋给数据范围更小的变量,我们就必须手动进行强制类型转换了,它的格式是这样的: 目标数据类型 变量名 = (目标数据类型)值或变量。
我们来举个例子:
int i;
double j = 5.5;
i=(int)j;
System.out.println(i);
double类型的5.5将被我们强制转换成int类型,小数点部分的值直接被舍弃了,所以我们输出的结果为:5。
三、需要补充的说明
1.char可以转成int
前面,我们可以看到,char类型的数据也是可以转成int类型的,那么它是根据什么实现的呢?
就是根据这张ASCII码表进行自动转换的
字符'0'对应的就是48,'A'对应65,'a'则对应97,举个例子,大家看一下:
int a='a';
int b='A';
int c='0';
System.out.println(a);
System.out.println(b);
System.out.println(c);
我们就能得到97,65和48。
2.运算时类型的自动转换
1)如果有高类型,低类型会自动转换成高类型
int a = 5;
double b = 5.0;
int c = a+b;
第三行就会报错,因为a先把自己转成了5.0再参与进运算当中,结果则为10.0,所以就不能赋给整数类型的c了
2)如果没有高类型,byte、short、char也会自动转换成int类型
byte a = 5;
byte b = 5;
byte c = a+b;
第三行也会报错,因为a和b会在运行过程中转换成int类型,得出的结果自然也是int类型,所以没办法赋给byte类型的c了,必须对c的数据类型进行更改或是手动的强制转换a+b后的值,(byte)(a+b)
但常量则不用考虑这个问题
byte a = 5+5;
像这么写是可以的,因为整数的常量会自动的算出结果,并判断其值是否在byte的范围内,如果是的话就可以编译通过了
四、总结
今天我们主要了解到了以下几点:
1.自动类型转换:在赋值和运算过程当中,数据范围较小的将会自动向上进行转换
2.强制类型转换:如果我们需要将更大数据范围变小的话,我们则需要进行强制的类型转换,但会不可避免的出现一些数据丢失
今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~
标签:02,类型转换,java,int,数据类型,println,类型,byte From: https://blog.csdn.net/a2018204587/article/details/139743599