与类型转换相关的知识点。



前言
  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
    Java基础:类型转换_精度问题
  • 运算中,不同类型的数据先转化为同一类型,然后进行计算(向表示范围大的类型转化,相同类型不变)
分类
  • 强制类型转换(大范围向小范围转换)
  • 自动类型转换(小范围向大范围转换)
代码示例
  • 强制类型转换与自动类型转换

public class Demo4 {
public static void main(String[] args) {
int i=128;
//强制类型转换 (类型)变量名 高——>低
byte b=(byte)i; //内存溢出
System.out.println(i);
System.out.println(b);

char c='a';
int d=c+1;
System.out.println(d);
System.out.println((char)d);
System.out.println("===============");
//自动类型转换 低——>高
double e=i;
System.out.println(e);
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不想干的类型
3.在高容量转换到低容量的时候,强制转换
4.在转换过程中可能存在内存溢出,或者精度问题
*/
}
}


  • Java基础:类型转换_代码示例_02
  • 精度问题

//有关精度问题的代码示例
System.out.println((int)23.7);
System.out.println((int)-45.89f);


  • Java基础:类型转换_强制类型转换_03
  • 内存溢出问题

public class Demo5 {
public static void main(String[] args) {
//操作比较大的数时,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money=10_0000_0000;
int years=20;
int total=money*years;
System.out.println(total); //计算时溢出了
long total2=money*years; //默认值是int,转换之前已经存在问题了
System.out.println(total2);
//解决方法
long total3=money*((long)years); //向范围大的类型转换
System.out.println(total3);
}
}


  • Java基础:类型转换_强制类型转换_04