java基础之类型转换


在说类型转换之前,必须先说说java语言的数据类型。Java语言有7中数据类型,每一种数据类型都在内存中分配了不同的内存空间。

具体分配空间如下:

Byte :1个字节

Char:2个字节

Short:2个字节

Int:4个字节

Long:8个字节

Float:4个字节

Double:8个字节

    在JAVA中,类型转换就是各种数据类型之间的相互转化。类型转换分为两种,自动类型转换和强制类型转换。

1.      自动类型转换,也称为隐式类型转换。

自动类型转换的前提是:(1)两种类型是彼此兼容的;(2)转换的目的类型占得空间范围一定要大于转化的源类型

例如:

2.      强制转换

强制转换的格式是将一个类型强制转换成另一种类型。一般是用于将父类转换为子类时或者将长数据类型变为短数据类型时。

例如:Class Student extends Person

     main中,可以这样进行强制转换:

      Person p=new Person();

stu=(Student)p

 

又例如:


 

在上面的例子中,如果将b=(byte)(b+200)改成b=b+200将会出错,原因是当byte类型的变量提升为int类型与int类型的常量200相加后,结果还是int类型,再赋值给byte类型,会出现损失精度的错误。

下面再来看看在视频中出现的一道面试题:


我们可以看到,在编译时,b=3+7;,没有报错,原因是:3和7都是常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。而b = b1 + b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范围,因此就会报错。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值