JAVA-初步认识-第二章-自动类型提升&强制类型转换

一. 深入理解变量

在之前的讲解中,我们谈论的都是定义不同类型的变量时要注意的问题。这一节中,我们将变量投入运算,探索在运算过程中,应该遵守的规则。

在这里对上一节《变量的基本演示》做一个小结,主要有三点。直接书写数字常量时,系统会给常量一个默认的类型,如int和double,当书写的常量赋值给定义好类型的变量时,就会产生错误。还有就是书写的常量和本身默认的类型起冲突。最后一点就是在书写源程序的过程中,一定要采用英文字符。

二. 变量的运算规则

运算的两端都是相同类型才可以,不然无法进行运算。

如果两端都是数值类型的话,虽然具体类型不一样,但是一样可以运算。原理是什么?前提一定是数值型,(为什么其他类型不行?其他类型之间根本无法进行算术运算。)两端数值类型不同,还可以进行运算的原理在于,可以自动提升数值类型。距离说明:byte a=3; int b=4; b=a+b; 本来类型不一样不可以运算,但因为都是数值型,它们本质上只是占据内存的空间大小不一样,将小的空间提高,并不影响计算。这里将byte的一个字节提升至四个字节的int,本质上数值大小没变,只是空间提升,不会影响计算结果,这就是这个原理能够执行的原因。

接着,如果byte a=3;int b=4;a=a+b的话,在DOS运算中,会报错为精度丢失。右边计算的时候,自动提升类型,提高空间是没有问题的,但是在将四个字节的数据赋值到一个字节的空间中时,就会产生精度丢失。为了强行将四个字节的内容赋值给一个字节的空间,这就产生了强制类型转换,a=(byte) (a+b)但我有点搞不清的是,强制的意义何在?在强制类型转换时,会存在舍弃,丢失精度的问题。有时候舍弃完,得到的是负数。在计算机中,到底存放的二进制是符号型还是真值


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值