1、数据类型的转换
因为java数据类型在定义时已经确定了,因此不能随意转换成其他的数据类型,如果一定要做转换的话,在一定的限度内,我们可以进行数据的类型转换。
1.1、基本数据类型转换
转换规则
数据类型由低到高 ——>
在所有的基本数据类型中,只有boolean不能与其他类型进行转换,char只能和int进行转换。
按照从低到高和从高到低可以分为两种转换方式
- 从低级到高级:自动类型转换,也称为隐式转换,数据之间的转换是自动发生的,不会损失精度。自动转换需要满足两个条件:
- 两种数据类型必须兼容,比如我们不能将字符串和数字进行转换
- 目标类型的范围必须大于源类型的范围
- 从高级到低级:强制类型转换,也称为显示转换,有可能损失精度,通过在源类型前面加上(目标类型)进行强制转换
- 实例演示:
float f = 1; // 隐式转换,将int类型的1赋值给级别更高的flaot类型
double d = (double)f;//强制转换,将低级别的float类型赋值给高级别的double类型
通俗点来说:高级别的类型就好比father,低级别的类型就好比son,自动类型转换就好比:突然有一天,son要变成father了(son:好家伙,熬了这么多年,我终于成你老子了,果断同意呀,看老子怎么检查你的作业。。。你情我愿,是为自动转换);而强制类型转换就好比(father:w艹,老子要变son了?这我不凉了,果断不同意呀。。。系统:我就要你变。。。你不情我愿,是为强制类型转换);
1.2、需要注意的细节
先来看一段代码:
public static void main(String[] args){
byte b = 10;
byte resule = b+1
}
在上面的代码中,byte resule = b+1
是不正确的,我们在前面说过,整形常量一般默认是为int类型的,当一个低级别的类型和一个高级版的类型进行算术运算时,低级别的类型会自动转换成高级别的类型,然后再进行运算,所以,这里的b+1
的结果实际上是一个int类型的数据,将int类型的数据赋值给byte的result,很明显是不行的,所以我们需要进行强制类型转换:byte result = (byte)b+1;
这一期到此就结束了,下一期主要是对运算符介绍,如果这篇文章对您有帮助的话,还请点赞、关注支持一下,非常感谢您的观看!!!