> **当你读到这段文字时,意味着我们都在为梦想而奋斗~**
>
> **坚持就是胜利,陌生人~**
>
> ****
>
> ****
>
> **个人主页:[Gu Gu Study](https://blog.csdn.net/2302_81249757?type=lately "Gu Gu Study")**
>
> ****
>
> **专栏:[一步一步了解Java](https://blog.csdn.net/2302_81249757/category_12656486.html?spm=1001.2014.3001.5482 "一步一步了解Java")**
>
> **喜欢的一句话:经常回顾自己努力的足迹,因此要为自己的努力留下痕迹。**
>
> **如果喜欢这篇文章,请点个赞支持一下,非常感谢!**
>
> **作者:小闭**
##
Java 中的类型转换
> **在 Java 编程语言中,类型转换是一项基础而重要的操作,它允许我们把一种数据类型转换为另一种数据类型。类型转换主要分为自动类型转换和强制类型转换两种。**
```java
int a = 10;
long b = 100L;
b = a; // 编译通过
a = b; // 编译失败
上面的代码是否引起了你的好奇?接下来的内容将为你揭晓其中的秘密!
一、自动类型转换
自动类型转换是指在不损失信息的前提下,将一种数据类型自动转换为另一种数据类型。这种转换通常发生在较小范围的数据类型向较大范围的数据类型转换时。(代码在编译时,编译器会自动处理,无需手动干预。)
1.1 自动类型转换(隐式)
例如:byte 转换为 int 类型
byte b = 10;
int i = b; // 自动类型转换
由于 byte 的取值范围小于 int,因此可以自动完成类型转换。
public class Test {
public static void main(String[] args) {
System.out.println(18); // 整型默认为 int
System.out.println(18.8); // 浮点型默认为 double
int a = 100;
long b = 10L;
b = a; // a 和 b 都是整型,a 范围小,b 范围大,a 赋值给 b 时,编译器自动提升 a 为 long 类型
a = b; // 编译报错,long 范围大于 int,可能丢失数据,不安全
float f = 3.14F;
double d = 5.12;
d = f; // 编译器将 f 转换为 double 后赋值
f = d; // double 范围大于 float,直接赋值给 float 会丢失数据,不安全
byte b1 = 100; // 编译通过,100 在 byte 范围内,自动转换
byte b2 = 257; // 编译失败,257 超出 byte 范围,数据丢失
}
}
现代编译器功能强大,错误部分会被标红,便于我们快速定位问题。注释中也明确指出了错误原因。
二、强制类型转换
2.1 强制类型转换(显式)
强制类型转换是指通过显式操作将一种数据类型转换为另一种数据类型。这种转换可能会导致信息丢失或数据错误,因此使用时需要格外小心。
如果你需要将范围大的类型转换为范围小的类型,或者反之,强制类型转换是可行的方法。当然,它也可以用于不同范围类型的转换。
强制类型转换的语法为:(目标类型)值。
需要注意的是,在进行强制类型转换时,如果结果超出了目标类型的取值范围,可能会导致数据异常。
```java
public class Test {
public static void main(String[] args) {
int a = 10;
long b = 100L;
b = a; // int-->long,范围由小到大,隐式转换
a = (int)b; // long-->int, 范围由大到小,需要强制转换,否则编译失败
float f = 3.14F;
double d = 5.12;
d = f; // float-->double,范围由小到大,隐式转换
文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4510.html