LongJL 发表于 2021-7-9 15:18

【自学笔记】 Java基础 - 数据类型转换

# 数据类型转换
数据类型的转换呢,分为俩种嗷,分别是隐式转换和显示转换

## 隐式转换
- 特点:**代码不需要进行特殊化处理,字段完成**
- 规则:**数据范围从小到大**
- 精度排行(从高到低): **double > float > long > int > short > byte**
```
public class main {
        public static void main(String[] args){
                //左边是long类型,右边是默认的int类型,左右不一样
                //一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行存储
                //int-->long,复合数据范围从小到大的要求
                //这一行代码发生了自动类型转换。
                long num1 = 100;
                System.out.println(num1);// 100
                //左边是double类型,右边是float类型,左右不一样
                //float-->double,符合从小到大的规则
                //也发生了自动类型转换。
                double num2 = 2.5F;
                System.out.println(num2);// 2.5
                //左边是float,右边是Long类型,左右不一样
                //Long-->float,float范围更大一些,符合从小到大的规则
                //也发生了自动类型转换
                float num3 = 30L;
       }
}
```

## 显示转换
- 特点:**代码需要进行特殊的格式处理,不能自动完成。**
- 格式:**范围小的的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;**
```
public class main {
        public static void main(String[] args){
                //左边是int类型,右边是long类型,不一样
                //long-->int,不是从小到大
                //不能发生自动类型转换!
                //int num1 = 100L;
                //格式:范围小的的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;
                int num1 = (int) 100L;
                System.out.println(num1);
        }
}
```
注意事项:
      1.强制类型转换,一般不推荐转换,一般会发生精度损失,数据溢出。
      2.byte/short/char这三种类型都可以发生数学运算,例如加法"+"。
      3.byte/short/char这三种类型在运算的时候,都会被首先提升为int类型,然后在计算。
      4.boolean类型不能发生数据类型转换。
      5.对于byte/short/char三种类型来说,如果右侧得数值不超过它得范围本身,那么它会由一个隐含得为我们补上(byte)(short)(char)。
      6.如果没有超过左侧得范围,编译器补上强转。
      7.如果右侧超过左侧得范围,编译器报错。
      8.double-->int,强制类型转换 并不是四舍五入,所以小数位都被舍弃。

```
public class main {
        public static void main(String() args){
                char zf1 = 'A';//这是一个字符型变量,里面是大写字母A
                //计算机的底层会用一个数字(二进制)来代表字符A,就是65
                //一旦char类型进行了数学计算,那么字符就会按照一定规则翻译成为一个数字
                byte num4 = 50; //注意!右侧的数值大小不能超过左侧的类型范围
                byte num5 = 60;
                //byte + byte --> int + int --> int
                int result1 = num4 + num5
                System.out.println(result1); //110
                short num6 = 40;
                //byte + short --> int + int --> int
                //int result2 = num4 + num6;
                //int强制转换为short:注意必须保证逻辑上真实大小本来就没有超过short范围,否则会发送数据溢出。
                short result2 = (short)(num4 + num6);
        }
}
```

九分叶里狼 发表于 2021-7-9 15:26

java自学推荐看视频{:1_886:}

LongJL 发表于 2021-7-9 15:38

九分叶里狼 发表于 2021-7-9 15:26
java自学推荐看视频

有的,视频文档结合着看,顺便做一些笔记 有空的时候看看加深下印象

vvvwxf 发表于 2021-7-9 15:38

{:1_908:}这是才起步呀,加油

LongJL 发表于 2021-7-9 15:40

vvvwxf 发表于 2021-7-9 15:38
这是才起步呀,加油

会的,谢谢支持:lol

小白不怂 发表于 2021-7-9 17:12

加油加油{:1_927:}

LongJL 发表于 2021-7-9 17:32

小白不怂 发表于 2021-7-9 17:12
加油加油

会的,谢谢支持

yasuoren 发表于 2021-7-9 18:41

加油!
我也正在自学JAVA

LongJL 发表于 2021-7-9 18:52

yasuoren 发表于 2021-7-9 18:41
加油!
我也正在自学JAVA

嗯嗯 加油!

Echo_ 发表于 2021-7-10 08:59

谢谢分享
页: [1]
查看完整版本: 【自学笔记】 Java基础 - 数据类型转换