类型转换专题

简介: 将数据类型中,取值范围小的数据,给取值范围大的类型赋值,可以直接赋值。

隐式转换

将数据类型中,取值范围小的数据,给取值范围大的类型赋值,可以直接赋值。

小的给大的

int a =10;// int占4个字节
double b =a;// double占 8个字节
System.out.println(b);
//输出:10.0

1.png

细节:如果小的数据类型和大的数据类型运算,小的会提升到大的之后,在进行运算。

public class LeiXingZhuanHuan {
    public static void main(String[] args) {
        int a= 10;// 4个字节
        double b =12.3;// 8个字节
        double c = a+b;
        System.out.println(c);
    }//输出:22.3
    //a和b在运算的过程中,会先将a提升为double类型
    //当类型统一之后,在进行运算。
    //两个double运算,结果话说double
    //故,结果使用double接收

注意:byte、short、char三种类型在运算时,无论是否有更高的数据类型,都会提升为int,然后在进行运算

    public static void main(String[] args) {
        byte a = 10;
        byte b = 20;
        int c = a + b;
        System.out.println(c);
    }//输出:30
//如果将int换位byte就会报错。故以后使用int即可

强制转换

把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量

格式:目标数据类型   变量名   =(目标数据类型)值或者变量

大的给小的

如果是这样:

1.png

会报错不兼容,会损失精度。

那么如果我们非要强制使用byte呢,那么就需要强制转换,如图:

1.png1.png

如果我们这样:

也会损失,即小数点之后全部没有。

1.png

输出结果为:12

所以会损失精度。


需要注意的是Java是存在一种常量优化机制的,例如(byte a  =  5 + 8;)即会在编译时会让5和8进行相加,然后自动判断13是否在byte的取值范围内。如果不在范围内,则会编译出错。在范围内,则通过编译。

总结

小的给大的可以,大的给小的只能强制转换。

目录
相关文章
|
6月前
|
安全 编译器 程序员
【C++】C++的类型转换
【C++】C++的类型转换
|
安全 编译器 C语言
C++的类型转换
C++的类型转换
46 0
|
4月前
|
存储 安全 编译器
【C++11】类型转换
【C++11】类型转换
21 0
|
4月前
|
安全 程序员 编译器
C++一分钟之-C++中的类型转换
【7月更文挑战第8天】C++中的类型转换涉及隐式和显式操作,隐式转换如从`int`到`double`是自动的,但可能导致数据丢失。显式转换包括`static_cast`, `dynamic_cast`, `const_cast`, `reinterpret_cast`,以及转换构造函数。要避免数据丢失、类型不匹配和运行时错误,需谨慎使用显式转换并检查结果。过度使用`reinterpret_cast`应避免。理解这些转换有助于编写更安全的代码。
34 0
|
6月前
|
存储 程序员 编译器
类型转换:关键技巧
类型转换:关键技巧
|
6月前
|
C++
c++类型转换
c++类型转换
78 1
|
6月前
|
安全 编译器 程序员
【C++】—— C++的类型转换
【C++】—— C++的类型转换
|
6月前
|
安全 编译器 程序员
C++类型转换
C++类型转换
29 0
|
安全 C#
C#类型转换
C#类型转换
51 0
|
6月前
|
安全 编译器 C语言
C++之类型转换
C++之类型转换
45 0