自动类型转换、强制类型转换及常量

 我们知道,每种类型都有自己的字节数和取值范围。而我们所取的数据理应也要在这个范围之内。在了解自动类型转换和强制类型转换之前,我们应当知道有哪些数据类型,如:byte、short、int、long、float、double、char、boolean等。

一、自动类型转换

自动类型转换是计算机帮你完成的。其转换规则是从存储范围小的类型转换为存储范围大的类型。

如byte和int,byte所定义的变量可以赋值给int所定义的变量。

 在自动类型转换中如果数据超出这个类型的取值范围,那么系统会报错。

二、强制类型转换

在强制类型转换中,其转换规则与自动类型转换相反,它是从存储范围大的类型转换为存储范围小的类型。

从这个代码可以直观的看出强制类型转换的形式(要给类型加上括号)。

在强制类型转换中,如果数据超出字节较小类型的取值范围,系统依旧能给出输出结果。但结果却不是你想的那个数。

 这是因为计算机的底层是二进制,每种类型的输出数据都是由二进制表示出来的。int类型的存储空间大,转换成byte类型时其补码要舍去多余的部分,而正是这个原因,使得系统输出了切割后的数据。如果你们想要知道为什么得到的结果是-56,就可以去看看原码、反码和补码之间的联系。

三、运算式中的常量

 在java的运算式中,一般来说,整数常量的默认类型是int类型。

首先先来看这个代码:

 

 我们都知道这个代码输出的是20,但我们现在有两个不同类型的变量却能进行相加减,这个10代表的类型到底是byte还是int呢?所以我们先要了解10是什么意思。

对于一个变量运算 byte a=10; 来讲,如果赋值号右边只有数字出现,那么这个数字可以被当作常量来看待,当这个数字是在前面类型的取值范围内,那么可以直接赋值给变量a;如果赋值号右边既有数字又有变量出现,如 byte a=a+10; ,此时这个10应当默认是int类型,而不是常量。而不同类型不能相加,因此系统会报错。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值