java纯小白之路第二站

类型转换

  • 类型转换仅限于基本数据类型的转换
    • 数据类型大小比较:
byte -> short -> char -> int -> long -> float ->double

小(低).....................>......................大(高)[数据宽度]
  • char之所以能在整数类型中,因为char本质上就是数字。
  • 而float、double,则是因为小数的优先级大于整数。
强制转换:
  • 高 --> 低

在这里插入图片描述

  • 因为byte的数据宽度小于int的数据宽度,所以报错!

  • 如果非要想把int数据类型转换为byte

    在这里插入图片描述

  • 这回的就不报错了,这就是强制转换!

  • *高数据类型转为低数据类型要在等号后面加括号并且写入要转的低数据类型

  • 强制转换就是 (类型)变量名

  • 但是!!!!!!!!

  • 如果强转的数值超出了数据宽度

在这里插入图片描述

因为byte的最大数值宽度就是127,一旦超出了低数据类型的宽度,就属于内存溢出

  • 最后输出的结果就不可预料
自动类型转换:
  • 低 --> 高

在这里插入图片描述

  • 由于是int转换成浮点,所以就变成小数.0

注意:

1.boolean类型不能参与转换。
2.不能对象类型转换为不相干的类型(就好比人不能转换成猪,但是男人可以转变成女人)。
3.在把高容量转换为低容量时候,要强制转换。
4.转换时候可能遇到内存溢出,或者精度问题(就是小数浮点)。
  • 这个就是精度问题,精度问题一般都是小数转的。

在这里插入图片描述

印象加强:

  • 理解char类型的本质然后再明白自动强制转换的差别

在这里插入图片描述

细节错误和算法:

  • 操作较大的数值时,应该注意一下内存溢出的问题。

  • JDK7新特性。下划线之间可以用下划线来分割。

    错误:

在这里插入图片描述

为何会出现这样的错误,为何不是300亿?

如果最后相乘的total的类型int换成long的话,应该会对吧?

在这里插入图片描述

  • total类型从int变成long也不对,是为什么?

  • 原因:

    无论total的类型变成什么,他都不会出正确答案的,因为在等号右边运算的时候,都是int类型相乘的,乘积已经超过了int可以容纳的内存,造成内存溢出,如果要获得正确答案,应该先在等号右边任意一变量自动转换为long类型,才可以容下更大的数据宽度!
    
  • 正确答案:

在这里插入图片描述

再来一个小细节:

long a = 6666666666L;
long b = 6666666666l;

long类型后面的L表示最好写成大写的L,因为小写的l容易与一弄混,养成良好的编码习惯!加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值