返回主篇章
👇
【Java】才疏学浅·小石Java问道之路
Java类型转换
1. 隐式类型转换
1.1 定义
隐式类型转换也叫自动类型提升,就是把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量。此时不需要我们额外写代码单独实现,是程序自动帮我们完成的。
Tip:
简单记忆方法:小的给大的,可以直接给。
1.2 提升规则
- 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。
- byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
1.3 取值范围从小到大的关系
byte -> short -> int -> long -> float -> double
1.4 示例
示例1
代码示例
double d = 10;
System.out.println(d);//10.0
解析
10是整数,整数默认是int类型的。
而在取值范围的顺序中:byte -> short -> int -> long -> float -> double
在赋值的时候把一个int类型的赋值给了一个double类型的。把一个小的赋值给一个大的是可以直接给的。
示例2
代码示例
byte b = 100;
int i = b;//可以成功赋值
解析
因为byte的取值范围是小的,int的取值范围是大的,在底层进行了隐式转换,不需要我们额外写代码单独实现,是可以直接赋值。
示例3
代码示例
int i = 10;
long n = 20L;
long result = i + n;
解析
变量i是int类型的,变量n是long类型的。
而在取值范围的顺序中:byte -> short -> int -> long -> float -> double
变量i里面的值会自动提升为long类型的,最终的结果其实就是两个long相加,那么最终的result是long类型的。
示例4
代码示例
int i = 10;
long n = 100L;
double d = 20.0;
double result = i + n + d;
解析
变量i是int类型,变量n是long类型,变量d是double类型。
而在取值范围的顺序中:byte -> short -> int -> long -> float -> double
所以变量i和变量n里面的值在参与运算的时候,都会进行类型提升,变成double。
最终其实就是三个double进行相加,那么最终的结果就是double类型的。
示例5
代码示例
byte b1 = 10;
byte b2 = 20;
int result = b1 + b2;//int
解析
因为b1和b2都是byte类型的。所以在参与计算的时候,变量b1和变量b2里面的值都会自动提升为int类型的。最终其实就是两个int类型的相加,最终结果也是int类型的.
示例6
代码示例
byte b = 10;
short s = 20;
long n = 100L;
long result = b + s + n;
解析
变量b是byte类型的,变量s是short类型的,变量n是long类型的。
byte,short,char类型的变量在参与运算的时候,变量里面的值会直接先提升为int。
第一步:变量b和变量s里面的值会先提升为int参与运算。
int + int + long
第二步:而long类型的取值范围是大于int的取值范围的。
所以变量b和变量s里面的值会再次提升为long。
long + long + long
所以最终结果是long类型的。
2. 强制类型转换
2.1 定义
如果要把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量。是不允许直接操作。
如果一定要这么干,就需要加入强制转换。
2.2 书写格式
目标数据类型 变量名 = (目标数据类型)被强转的数据;
要转成什么类型的,那么就在小括号中写什么类型就可以了。
2.3 示例
double a = 12.3;
int b = (int) a;
System.out.println(b);//12
注意:
强制转换有可能会导致数据发生错误。(数据的精度丢失)
小结
本章主要是对Java类型转换方面进行一个快速了解,通过多种示例,使得读者更加容易掌握这一方面的知识,同时在每个示例后面,都会有详细的解析。
如果有遇到什么问题,欢迎下方留言哦~
下一章内容更加精彩,敬请期待!
💙💙💙💙💙💙
Author: 小石.
Date: 2022.12.28
💙💙💙💙💙💙
- 1、如果觉得文章写行不错就点个 赞。✌
- 2、如果觉得写得好就 一键三连吧~ ✌✌✌