DataType01

 

  
  
  
  
  1. /*  
  2.     关于基本数据类型转换规则:  
  3.         1. 8种基本数据类型除boolean类型以外均可以相互转换.  
  4.         2. 小容量向大容量转换叫作自动类型转换:  
  5.                 byte<short<int<long<float<double  
  6.                      char<  
  7.         3. byte,short,char作混合运算的时候,各自都先转换成int在作运算  
  8.           
  9.         4.大容量向小容量转换是强制类型转换,须要增强制转换符,  
  10.         编译虽然经过,运行期可能损失精度。谨慎使用。  
  11.           
  12.         5.若是整数没有超出byte,short,char的取值范围,能够直接将这个整数赋值给byte,short,char  
  13.           
  14.         6.多种数据类型作混合运算,先转换成容量最大的那种再作运算。  
  15. */ 
  16.  
  17. public class DataTypeTest06 {  
  18.       
  19.     public static void main(String[] args) {  
  20.           
  21.         //出现错误,1000超出了byte的范围  
  22.         //byte a = 1000;  
  23.           
  24.         //正确,由于20没有超出byte范围  
  25.         //因此赋值  
  26.         byte a = 20;  
  27.           
  28.         //变量不能重名  
  29.         //short a =  1000;  
  30.           
  31.         //正确,由于数值1000没有超出short类型的范围  
  32.         //因此赋值正确  
  33.         short b =  1000;  
  34.           
  35.         //正确,由于默认就是int,而且没有超出int范围  
  36.         int c = 1000;  
  37.           
  38.         //正确,能够自动转换  
  39.         long d = c;  
  40.           
  41.         //错误,出现精度丢失问题,大类型-->>小类型会出现问题  
  42.         //int e = d;  
  43.           
  44.         //将long强制转换成int类型  
  45.         //由于值1000,没有超出int范围,因此转换是正确的  
  46.         int e = (int)d;  
  47.           
  48.         //由于java中的运算会会转成最大类型  
  49.         //而10和3默认为int,因此运算后的最大类型也是int  
  50.         //因此是正确的  
  51.         int f = 10/3;     
  52.           
  53.         //声明10为long类型  
  54.         long g = 10;  
  55.           
  56.         //出现错误,多个数值在运算过程当中,会转换成容量最大的类型  
  57.         //如下示例最大的类型为double,而h为int,因此就会出现大类型(long)到小类型(int)  
  58.         //的转换,将会出现精度丢失问题  
  59.         //int h = g/3;  
  60.           
  61.         //能够强制转换,由于运算结果没有超出int范围  
  62.         //int h = (int)g/3;  
  63.           
  64.         //能够采用long类型来接收运算结果  
  65.         //long h = g/3;  
  66.           
  67.         //出现精度损失问题,如下问题主要是优先级的问题  
  68.         //将g转换成int,而后又将int类型的g转换成byte,最后byte类型的g和3运算,那么  
  69.         //它的运算结果类型就是int,因此int赋值给byte就出现了精度损失问题  
  70.         //byte h = (byte)(int)g/3;  
  71.           
  72.         //正确  
  73.         //byte h = (byte)(int)(g/3);              
  74.           
  75.         //不能转换,还有由于优先级的问题  
  76.         //byte h = (byte)g/3;     
  77.           
  78.         //能够转换,由于运算结果没有超出byte范围  
  79.         //byte h = (byte)(g/3);  
  80.           
  81.         //能够转换,由于运算结果没有超出short范围  
  82.         short h = (short)(g/3);  
  83.           
  84.         short i = 10;  
  85.           
  86.         byte j = 5;  
  87.           
  88.         //错误,short和byte运算,首先会转换成int再运算  
  89.         //因此运算结果为int,int赋值给short就会出现精度丢失问题  
  90.         //short k = i + j;  
  91.           
  92.         //能够将运算结果强制转换成short  
  93.         //short k = (short)(i + j);  
  94.           
  95.         //由于运算结果为int,因此能够采用int类型接收  
  96.         int k  = i + j;  
  97.           
  98.         char l = 'a';  
  99.         System.out.println(l);  
  100.           
  101.         //输出结果为97,也就是a的ascii值  
  102.         System.out.println((byte)l);  
  103.           
  104.         int m = l + 100;  
  105.         //输出结构为197,取得a的ascii码值,让后与100进行相加运算  
  106.         System.out.println(m);  
  107.           
  108.     }  
  109. }  
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息