java是强类型语言,所以有些运算需要用到类型转换。

 

精度 低-------------------------------------高

byte,short,char,int,long,float,double

 

运算中,不同类型先转换为同一类型,再计算。 例如:

 
 1 public class data_cast {
 2     public static void main(String[] args) {
 3         int i = 128;
 4 
 5         //强制转换   (类型)变量名    高--低
 6         byte b = (byte) i;  //内存溢出,byte  -128---127
 7 
 8         //自动转换  低--高
 9         double d = i;
10 
11         System.out.println(i);
12         System.out.println(b);
13         System.out.println(d);
14 
15         /*
16         1.不能对bool值转换
17         2.不能把对象转换为不相干的类型
18         3.高容量转低容量,强制转换
19         4.转换过程,可能存在精度和内存溢出问题
20          */
21 
22         System.out.println("==============================");
23         System.out.println((int)23.7);  //23
24         System.out.println((int)-45.89f);   //45
25         System.out.println("==============================");
26         char c = 'a';
27         int n =c+1;
28         System.out.println(n);  //98
29         System.out.println((char) n);   //b
30         System.out.println("==============================");
31         //操作很大的数,注意溢出问题
32         //jdk7新特性,数字之间可以加下划线分割
33         int money = 10_0000_0000;
34         System.out.println(money);  //1000000000
35         int year = 20;
36 //        long num = 3333333333333333;      在long类型的范围之内,数字后的l是必须的
37         int total = year*money;
38         long total1 = year*money;   //默认是int类型,计算后才转换,还是有问题
39         long total2 = year*(long)money; //先转换,在计算就好
40         System.out.println(total);  //-1474836480
41         System.out.println(total1);
42         System.out.println(total2);
43 //        System.out.println(num);
44 
45 
46     }
47 }