类型转换

类型转换

1. 自动类型转换

  类型范围小的,可以直接赋值给类型范围大的

底层原理:

    byte a = 20;
  int b =a; //发生了自动类型转换
      System.out.println(a);
      System.out.println(b);

  a                00001100

  b 00000000 00000000 00000000 00001100

可以发现:

byte-->short-->int-->long-->float-->double

char-->int

Q1:为什么要进行类型转换?

W1: 存在不同类型的变量赋值给其他类型的变量

Q2:自动类型转换是什么样的?

W2:类型范围小的变量可以直接赋值给类型范围大的变量

2. 表达式的自动类型转换

在表达式中,较小范围的变量会自动转换为当前较大范围的变量再运算

byte、short、char-->int-->long-->float-->double

表达式的最终结果类型由表达式中的最高类型决定

byte、short、char可以直接转换成int型


//表达式的自动转化类型
      byte a = 10 ;
      int b = 10 ;
      double c= 30 ;
      double s = a + b + c ;
      System.out.println(s);

      //面试题
      byte x = 10 ;
      byte y = 10 ;
      //byte z=x+y错误   byte、short、char是直接转换成int运算的
      int z = x + y ;
      System.out.println(z);

 

3. 强制类型转换

  1. 通常型


int a = 20 ;
      //byte b = a ;报错数据类型大的不能直接赋值给小的
      byte b = (byte)a;
      System.out.println(a);
      System.out.println(b);

  底层原理:

  a 0000000 00000000 00000000 00010100

  b                                                  00010100

  1. 超出型

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

  i 00000000 00000000 00000101 11011100

  j                                                    11011100


double s = 99.5 ;
      int t = (int) s;
      System.out.println(t);//99

注意强制类型转换会导致数据丢失

上一篇:转载:C# Lpt 并口热敏小票打印机打印位图


下一篇:我的小细节