四、数据类型转换和常用编码表

  • 2020 年 05 月 04 日
  • 623次
  • 634 字
  • 5 条评论

教程视频


[scode type="yellow"]当数据类型不一样的时候,将会发生类型转换![/scode]

一、自动类型转换(隐式)

1.特点:代码不需要特殊处理,自动完成转换.

2.规则:数据范围从小到大.

public class Demo01DataType {
    public static void main(String[] args) {
        System.out.println(1024); // 这是一个整数,默认int类型
        System.out.println(3.14); // 这是一个浮点数,默认是double类型 
        
        // 左边是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;
        System.out.println(num3);
    }
}

二、强制类型转换(显式)

1.特点:代码需特殊处理,不能自动完成.

2.格式:范围小的类型,范围小的变量名 = (范围小的类型) 原本大的数据.

例如:int num =(int) 100L;

public class Demo02DataType {
    public static void main(String[] args) {
        // 左边是int类型,右边是long类型,不一样
        // long --> int,不是从小到大
        // 不能自动类型转换!
        // 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本大的数据
        int num = (int) 100L;
        System.out.println(num);
        
        // long 强制转换为int类型
        int num2 = (int) 6000000000L;
        System.out.println(num2); // 精度损失,出现int最大数值1705032704
        
        // double --> int,强制类型转换
        int num3 = (int) 3.5;
        System.out.println(num3); // 出现数字3,小数点后的数字损失
        // 如下代码,double转int类型,并不是四舍五入,所有小数点后的数字,都会被舍弃
        int num4 = (int) 3.99;
        System.out.println(num4); 
        
        char zifu = 'A';
        System.out.println(zifu + 1); // 66 代表大写字母A被当作65处理
        // 计算机的底层会使用一个数字(二进制)来代表字符A,就是65
        // 一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字
        
        byte shuzi = 40;
        byte shuzi2 =50;
        // byte + byte --> int + int --> int
        // byte相加的时候,首先都会被转为int数字,并算出一个新的int数字
        // byte result1 = shuzi + shuzi2;  
        // byte相加后,超出了byte的范围,所以再相加的时候,代码要用int而不能使用byte
        int result1 = shuzi + shuzi2;
        System.out.println(result1); // 90
        
        short num6 = 60;
        // byte + short --> int + int --> int
        // int强制转换为short:注意必须保证数字在逻辑上的真实大小不超过short的范围
        short result2 = (short) (shuzi + num6);
        System.out.println(result2); // 100
        
        
        
    }
}

[scode type="share"]注意事项:[/scode]

1.强制类型转换一般不推荐使用,因为可能会出现数据溢出,精度损失!

2.byte/short/char这三种类型都可以发生数字运算,例如加法“+”

3.byte/short/char这三种类型在进行计算的过程中,首先会被提升为int类型,然后再计算.

4.boolean类型不能发生数据类型转换.

公众号


版权属于:嘉悦五日

本文链接:http://blog.spso.top/archives/34/



—— 收到 5 条评论 ——

    2021 年 01 月 27 日 01:53

    erectile dysfunction and radiation treatment https://erectiledysfunctionpillscvs.com/# erectile pills in canada

    2021 年 01 月 27 日 01:53

    erectile dysfunction and radiation treatment https://erectiledysfunctionpillscvs.com/# erectile pills in canada

    2021 年 01 月 27 日 01:53

    erectile dysfunction and radiation treatment https://erectiledysfunctionpillscvs.com/# erectile pills in canada

    ClarkPof
    2021 年 01 月 19 日 07:16

    cloroquina 250 mg
    chloroquine phosphate tablets
    10 best erectile supplements
    erectile capacity
    hydroclorquin
    trump hydroxychloroquine
    erectile disorder psychology
    long term effects of plaquenil
    tadalafi
    tadalafil dosage
    citromax antibiotic drug
    where can you buy zithromax

    hjkhgkhgj
    2020 年 06 月 06 日 15:07

    zdsfsdfsdfasf

OωO