Java笔试题库Java笔试题库⑩_第1页
Java笔试题库Java笔试题库⑩_第2页
Java笔试题库Java笔试题库⑩_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

以下两个片段执行结果差异的原因是什么? 片段一: short s=1; s=s+1; 片段二: short s=1; s+=1; 可以自己组织一下答案,最后看结论 结论分析: 片段一自然是编译不通过的 ,提示损失精度 。 那么片段二为什么能编译通过呢? 隐式类型转换可以从小到大自动转,即 byte-short-int-long,如果反过来会丢 失精度,必须进行显示类型转换。 回到这一题来看,s+=1 的意思与 s = s+1 不同,s=s+1 这句先执行 s+1 然后把结 果赋给 s,由于 1 为 int 类型,所以 s+1 的返回值是 int,编译器自动进行了隐式类型转换, 所以将一个 int 类型赋给 short 就会出错。 而 s+=1 不同,由于他是使用+=操作符,在解析的时候 s+=1 就等价于 s = (short)(s+1),也就是 s+=1 s = (s 的类型)(s+1)。 (最后结论引自百度知道,略有删改。 解答出处: 扩展: 基本类型数据及所占字节基本类型数据及所占字节 数据类型 所占字节 boolean 未定 byte 1 字节 char 2 字节 short 2 字节 int 4 字节 long 8 字节 float 4 字节 double 8 字节 隐式转换与显示转换概念隐式转换与显示转换概念 隐式类型转换隐式类型转换 隐式转换也叫作自动类型转换, 由系统自动完成. 从存储范围小的类型到存储范围大的类型. byte -short(char)-int-long-float-double 显示类型转换显示类型转换 显示类型转换也叫作强制类型转换, 是从存储范围大的类型到存储范围小的类型. 当我们需要将数值范围较大的数值类型赋给数值范围较小的数值类型变量时,由于此时可能会丢失精此时可能会丢失精 度度,因此,需要人为进行转换。我们称之为强制类型转换。 doublefloatlongintshort(char)byte 基本数据类型之间的转换规则基本数据类型之间的转换规则 1.在一个双操作数以及位运算等算术运算式中,会根据操作数的类型将低级的数据类型 自动转换为高级的数据类型,分为以下几种情况: 1)只要两个操作数中有一个是 double 类型的,另一个将会被转换成 double 类型, 并且结果也是 double 类型; 2)只要两个操作数中有一个是 float 类型的,另一个将会被转换成 float 类型,并且 结果也是 float 类型; 3)只要两个操作数中有一个是 long 类型的,另一个将会被转换成 long 类型,并且结 果也是 long 类型; 4)两个操作数(包括 byte、short、int、char)都将会被转换成 int 类型,并且结 果也是 int 类型。 2. 如果低级类型为 char 型,向高级类型(整型)转换时,会转换为对应 ASCII 码值, 再做其它类型的自动转换。 3. 对于 byte,short,char 三种类型而言,他们是平级的,因此不能相互自动转换,可 以使用下述的强制类型转换。 如: short i=99 ; char c=(char)i; System.out.println(output:+c); 4. 不能在布尔值和任何数字类型间强制类型转换; 5. 不同级别数据类型间的强制转换,可能会导致溢出或精度的下降。 6. 当字节类型变量参与运算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论