类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
                  字节大小(容量)->
低--------------------------------------------->高

byte,short,char -> int -> long -> float -> double
  • 小数的优先级一定大于整数
  • 运算中,不同类型的数据先转化为同一类型,然后再进行运算

强制类型转换

  • 数据类型从高到低转换则为强制转换 (类型)变量名
  • 数据类型从低到高转换则为自然转换,不需要添加任何字符
//强制转换
int i = 128;		//128
byte b = (byte) i;	//-128
double c = i;		//128.0

//精度问题
System.out.println((int)23.7);		//23.7
System.out.println((int) -45.8f);	//-48.8

//类型转换
char d = 'a';
int e = d+1;
System.out.println(e);			//98
System.out.println((char) e);	//b
  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 在把高容量转换为低容量时,需要进行强制转换
  4. 转换过程中可能出现内存溢出,或者精度问题
int mon = 1000000000;
int mon1 = 10_0000_0000;
int year = 20;
int total = mon*year;

System.out.println(mon);    //1000000000
System.out.println(mon1);   //1000000000
System.out.println(total);  //超出类型容量,为-1474836480

long total1 = mon*(long)year;//将数据类型转换成更高数据类型,并在后面单位添加该类型
System.out.println(total1); //输出正常,20000000000
  1. 如果数值超出类型数据容量,则会内存溢出,并随机输出值

  2. 操作比较大的数值时,注意溢出问题

  3. JDK新特性,数值比较大时,可以用下划线分割,每4位分割