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 }