Java语法学习——类型转换

一、自动类型转换

什么是自动类型转换,为什么要进行自动类型转换?

  • 类型范围小的变量,可以直接赋值类型范围大的变量。

  • 为了探究byte类型可以直接赋值给int类型,我们在IDEA里新建一个package(it.com.type),然后在这下面新建一个Java class(TypeConversionDemo1):

  

package it.com.type;

public class TypeConversionDemo1 {
    public static void main(String[] args) {
        // 目标:理解自动转换类型机制。
        byte a = 12;
        int b = a;  // 发生了自动类型转换了
        System.out.println(a);
        System.out.println(b);
    }
}
  • 代码运行结果为:

  

自动类型转换在计算机中的执行原理

自动类型转换的其他形式

 

二、表达式的自动类型转换

  • 在表达式中,小范围类型的变量,会自动转换成表达式中较大的范围的类型,再参与运算。

  

注意事项:

  • 表达式的最终结果类型由表达式中的最高类型决定
  • 在表达式中,byte、short、char直接转换成int类型参与运算的。

 

  • 为了掌握表达式的自动类型转换机制,我们在IDEA里新建一个package(it.com.type),然后在这下面新建一个Java class(TypeConversionDemo2):

  

package it.com.type;

public class TypeConversionDemo2 {
    public static void main(String[] args) {
        // 目标:掌握表达式的自动类型转换机制。
        byte a = 10;
        int b = 20;
        long c = 30;
        long rs = a + b + c;
        System.out.println(rs);

        double rs2 = a + b + 1.0;
        System.out.println(rs2);

        byte i = 10;
        short j = 30;
        //short rs3 = i + j;
        int rs3 = i + j;
        System.out.println(rs3);


        // 面试笔试题
        byte b1 = 10;
        byte b2 = 80;
        //byte b3 = b1 + b2;
        int b3 = b1 + b2;
        System.out.println(b3);

    }
}
  • 代码运行结果为:

  

 

三、强制类型转换

类型范围大的数据或变量,直接赋值类型范围小的变量,会报错

强制类型转换

  • 强行将类型范围大的变量、数据赋值给类型范围小的变量。

  

  

强制类型转换在计算机中的执行原理

注意事项

  • 强制类型转换可能造成数据(丢失)溢出
  • 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回

 

  • 为了掌握强制类型转换,我们在IDEA里新建一个package(it.com.type),然后在这下面新建一个Java class(TypeConversionDemo3):
package it.com.type;

public class TypeConversionDemo3 {
    public static void main(String[] args) {
        // 目标:掌握强制类型转换。

        int a = 20;
        //byte b = a;

        // 强制类型转换
        byte b = (byte) a;  // ALT + ENTER 快速查找报错
        System.out.println(a);
        System.out.println(b);


        int i = 1500;
        byte j = (byte) i;
        System.out.println(j);


        double d = 99.5;
        int m = (int) d;  // 强制类型转换
        System.out.println(m);  // 去掉小数部分,保留整数部分
    }
}
  • 代码运行结果为:

  

posted @ 2023-08-15 22:07  soulmate_clx  阅读(21)  评论(0)    收藏  举报