数据转换(自动转换+强制转换)

/*
自动转换
1.显式:代码不需要处理,直接完成转换
  规则:数据范围从小到大
*/
public class demo05{
  public static void main(String[] args){
     System.out.println(30);//直接输出一个整数,默认是Int类型
     System.out.println(3.12);//直接输出一个小数,默认是double类型
     long nume1=100;//整数之间的数据转换
     //(1)左边是long类型,右边默认是int类型
     //(2)等号赋值,右边赋值给左边
    //(3)int——>long ,满足左大右小的数据范围
    //(4)这一行代码发生了自动转换
     System .out.println(nume1);//100
     double nume2=3.14159267F;//浮点数之间的数据转换
     //(1)左边是double,右边是float;
    //(2)从double->float;满足左大右小的数据范围,也发生了自动类型转换
     System.out.println(nume2);
     float nume3 =30L;
     //(1)从long->float,范围float大于long,满足左大右小的数据范围
    //(2)这一行代码发生了自动转换
      System.out.println(nume3);
  }
}

数据转换(自动转换+强制转换)_第1张图片

/*强制转换
  1.特点:代码需要特殊格式的处理,不能自动完成
  2.格式:范围小的类型+范围小的变量名=(范围小的类型)+原本范围大的数据
  注意事项:
  1强制转换一般不推荐使用,因为可能会出现数据溢出,精度丢失。
  2.byte/short/char这三种类型可以进行数学运算
  3.byte/short/char这三种类型在进行运算的时候,都会被首先提成为int类型,然后在计算
  4.boolen类型不能发生任何数据类型的转换
*/
public class demo06{
  public static void main(String[] args){
      //左边是int类型,右边是long
      //long->int,不是从小到大,不能完后曾自动转换
      //格式;范围小的数据类型+范围小的变量名=(范围小的数据类型)+原本范围大的数据
      int nume1=(int)100L;
      System.out.println(nume1);
      /*
      //long->int(强制转换)
      int nume2=6000000000;
      System.out.println(nume2);//1705032704  溢出
      */

数据转换(自动转换+强制转换)_第2张图片

数据转换(自动转换+强制转换)_第3张图片

 

      //double->int (强制转换)
      int nume2=(int)3.99;
      System.out.println(nume2);//3  (这里并不是四舍五入,而是舍掉小数位)精度丢失

数据转换(自动转换+强制转换)_第4张图片
      char nuem3='A';//这是一个字符变量'A'
      System.out.println(nume3+1);//66  也就是大写字母A被当成了65来进行处理
      //计算机的底层会用一个数字(二进制)来代表字符‘A’,也就是65
      //一旦char进行了数学运算,那么字符会按照一定的规则被翻译成一个数字
      
      /*
      byte nume4=40;//右侧的数值大小不能超过左侧的数值范围
      byte nume5=50;
      byte result1=nume4+nume5;//(都会被首先提成为int类型)int+int->int
       System.out.println(result1);
       */
       /*
       这里会报错
       */
      //正确的写法如下:
      byte nume4=40;//右侧的数值大小不能超过左侧的数值范围
      byte nume5=50;
      int result1=nume4+nume5;
      //byte+bute->int+int->int
       System.out.println(result1);//90
       short nume6=40;
       //byte+short->int+int->int
       //int 强制转换为short
       //必须保证逻辑上的真是大小本来就没有超过short范围i,不然会出现数据溢出

       //最小数据类型+最小数据变量=(最小数据类型)+(原来范围大的数据)
       shiort result2=(short)(nume5+nume6);//90
  }
}
       数据转换(自动转换+强制转换)_第5张图片

 

 

 

 

你可能感兴趣的:(讲义,java)