Java基础—类型转换

谁说我不能喝 提交于 2020-03-16 15:41:36

1.类型转换

  • 由于Java是强类型语言,所以在进行有些运算时,需要用到类型转换。
  • 运算时,不同类型的数据从低到高先转化为同一类型,在进行运算。
  • byte→short→int→long→float→double
  • 强制类型转换:(类型)变量名

    高类型→低类型

    int i=128;
    byte b=(byte)i;
  • 自动类型转换

    低类型→高类型

    int i=128;
    double d=i;

2.注意

  1. 不能对布尔值进行转换
boolean flag=(boolean)23;//错误写法
  1. 不能把对象类型转换成无关的对象
  2. 在高→低,强制类型转换
  3. 转换时会出现内存溢出或精度问题

内存溢出

int i=128;
byte b=(byte)i;//byte范围在-128~127内,i=128,导致内存溢出

输出
128
-128

精度问题

System.out.println((int)23.3);
System.out.println((int)23.33f);

输出:
23
23


3.字符类型(char)

  • char类型本质上也是数字类型
char c='a';
int d=c+1;
System.out.println(d);//输出98
System.out.println((char)d);//输出b

a(97)的下一个字母就是b(98)


4.扩展

  • 操作比较大的时候,注意溢出问题
  • JDK7新特性,数字之间可以用下划线分割
int money=10_0000_0000;
int year=20;
int total1=money*years;//-1474836480,这里计算就已经溢出了
long total2=money*years;//money*years的结果是int,已经计算溢出了,再赋值给long已经没用用了
long total3=money*((long)years);//先把一个数转换为long,根据类型转换的原则,money*((long)years)计算时,money会先转换为long,然后在计算
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!