day4-类型转换

类型转换

Java是强类型语言,运算过程中需要用到类型转换,在运算中把不同类型的数据先转换成同一种再运算。

类型转换分为两种:

1.自动转换:低到高自动转换

2.强制转换:高到低需要用 (类型)变量名 进行转换

数据类型排序:

低-------------------------------------------------------------高

byte、short、char < int < long < float < double

 

自动转换例子-int转换double:

public class Demo03{
   public static void main(String[] args){
    int a = 1;
    double b = a;

       System.out.println(a);//输出结果:1
       System.out.println(b);//输出结果:1.0
 
}

强制转换例子-int转换byte:

public class Demo03{
   public static void main(String[] args){
    int a = 1;
    byte b = (byte)a;//(类型)变量名

       System.out.println(a);
       System.out.println(b);

  }
}

注意点:

1.不能对布尔值进行转换,因为布尔值按位存储,运算逻辑有问题。

2.不能把对象类型转为不相干类型。

3.在把大容量转为低容量的时候用强制转换。

4.转换的时候可能存在内存溢出或者精度问题。

例1-内存溢出:

public class Demo03{
   public static void main(String[] args){
    int a = 128;
    byte b = (byte)a;

       System.out.println(a);//输出结果:128
       System.out.println(b);//输出结果:-128   内存溢出,因为byte类型范围只有-128-127,所以在超出范围之后会输出最大范围值

  }
}

例2:内存溢出转换实操

public class Demo03{
   public static void main(String[] args){
    int a =10_0000_0000;
    int b =20;

    int c =a*b;
    long d = a*(long)b;


    System.out.println((long)c);//输出结果:-1474836480// 内存溢出,虽然转换成long但是前面的计算过程用的是int计算 所以把结果换成long类型的也无济于事
    System.out.println(d);//输出结果:-20000000000//d变量在计算之前转换成的long,所以计算过程是long运算的,所以输出正确

  }
}

例子-精度不准:

public class Demo03{
   public static void main(String[] args){
    double a = 12.21238;

       System.out.println((int)a);//输出结果:12 精度不准在double转int的时候把小数点后的数值忽略了

  }
}

 

上一篇:Day4 Python基础学习


下一篇:牛客java专项练习-day4