转自https://blog.csdn.net/alinshen/article/details/53571857

今天看到网上有网友问到关于final修饰的面试题目,题目如下:

[java] view plain copy
  1. <span style="font-family:SimSun;"><span style="font-size:14px;">byte b1=1,b2=2,b3,b6,b8;
  2. final byte b4=4,b5=6,b7;
  3. b3=(b1+b2);  /*语句1*/
  4. b6=b4+b5;    /*语句2*/
  5. b8=(b1+b4);  /*语句3*/
  6. b7=(b2+b5);  /*语句4*/
  7. System.out.println(b3+b6);</span></span>

问题是:上面哪条语句运算会出错呢?

其实,这个题目主要考察的就是基本数据类型转换的问题,主要涉及到以下几个知识点:

1、所有的byte,short,char型的值将被提升为int型;
2、如果有一个操作数是long型,计算结果是long型;
3、如果有一个操作数是float型,计算结果是float型;
4、如果有一个操作数是double型,计算结果是double型;
5、被final修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。

最需要注意的是第五点,被final修饰的,这句话看似简单,但其实包含的有2种情况:

1.被final修饰的为byte,short,char,int中的任何一种,则运算之后,得到的类型可以是byte、short、char、int、long、float、double中的任何一种都不会出错;(前提是计算结果不能超出左边的取值范围,比如两个a都是char但是相加结果是194,超出了byte范围,所以结果不能是byte)

2.如果运算中有被final long 或者 final float 或者 final double修饰,则结果必须为同级别或者高一级别,eg:

[java] view plain copy
  1. <span style="font-size:14px;">  final byte a1=1,b1=1,c1=1,b11;
  2. final char a2='a',b2='a',c2='a',b22;
  3. final short a3=3,b3=3,c3=3,b33;
  4. final int a4=4,b4=4,c4=4,b44;
  5. final long a5=5,b5=5,c5=5,b55;
  6. final float a6=6,b6=6,c6=6,b66;
  7. final double a7=7,b7=7,a8=8,b77;
  8. //等号右边,被final修饰的为byte,short,char,int中的任何一种;等号左边可以为byte、short、char、int、long、float、double中的任何一种都不会出错
  9. b11=a1+a2;
  10. b11=a2+a3;
  11. b22=a2+a3;
  12. b33=a4+a3;
  13. b44=a2+a3;
  14. b55=a2+a3;
  15. b66=a2+a3;
  16. b77=a2+a3;
  17. //等号右边,被final修饰的为long、float、double中的任何一种;等号左边类型必须等于或者高于等号右边类型才不会出错,否则出错。
  18. b11=a4+a5;   //编译时出错
  19. b22=a5+a5;   //编译时出错
  20. b33=a5+a5;   //编译时出错
  21. b44=a5+a5;   //编译时出错
  22. b55=a6+a6;   //编译时出错
  23. b66=a5+a6;
  24. b77=a7+a2;</span>

有不正确的地方希望大家留言指出来。

转载于:https://www.cnblogs.com/lijingran/p/8810609.html

2个byte类型数据相加(转型问题的分析)相关推荐

  1. 系统性详解Redis操作Hash类型数据(带源码分析及测试结果)

    1 缘起 系统讲解Redis的Hash类型CURD, 帮助学习者系统且准确学习Hash数据操作, 逐步养成测试的好习惯, 本文较长,Hash的操作比较多,请耐心看, 既可以集中时间看,亦可以碎片时间学 ...

  2. Java中Byte类型数据在运算中的问题

    比如: byte a=1; byte b=2; byte c; c=a+b; //这样是计算不出c,是错误的 c=a+1; //这样也是不能计算c的 c=64+1; //为什么这样就能计算c,在Jav ...

  3. java中的double 类型数据相加问题

    问题描述:比如说 double a=3.0 double b=4.0 我 把a+b用 system.out.println输出 得到7.000000000000000006 解决方法:做float或d ...

  4. 十六进制的形式在屏幕中间显示二进制byte类型数据

    思想 0 ~ 9和'0' ~ '9'之间的映射关系 1 + 30H = 31H = '1' 10 ~ 15和'A' ~ 'F'之间的映射关系 0BH + 37H = 42H = 'B' 标准处理手法: ...

  5. response_json是什么类型数据_零基础学VBA编程第5课:什么是数据类型?

    每天一篇Excel技术图文微信公众号:Excel星球NO.79-什么是数据类型?作者:看见星光微博:EXCELers / 知识星球:Excel 嗨,大家好,我是星光,今天咱们来继续学习VBA编程. 在 ...

  6. response_json是什么类型数据_零基础学VBA编程05:什么是数据类型?

    每天一篇Excel技术图文微信公众号:Excel星球NO.79-什么是数据类型?作者:看见星光微博:EXCELers / 知识星球:Excel 嗨,大家好,我是星光,今天咱们来继续学习VBA编程. 在 ...

  7. ABAP中接收.NET语言byte[]类型返回值问题

    在公司自开发的一个项目中,使用了.NET编写的视频监控控件.控件提供了CutBytePicture接口函数用于截取视频图片,返回图片字节流..NET函数原型如下: public byte[] CutB ...

  8. 读写数据库Image类型数据

    数据库的Image字段保存的是字节,所以写入数据库Image字段和从数据库Image字段读取的内容都应该为字节. 1.数据库Image字段读写文件 写文件:写文件的过程为将文件以流文件形式打开并将内容 ...

  9. pythonbyte转int_Python int与byte类型相互转化

    根据Python自定义的功能,使用to_bytes函数转化int类型数据为byte型,然后使用from_bytesa将byte类型数据转化为int型. def to_bytes(self, lengt ...

最新文章

  1. oracle10g sql跟踪,SQL性能的度量 - 语句级别的SQL跟踪autotrace
  2. SAP项目里的关键用户,兼职还是专职?
  3. 谷歌程序员少输一个“”,差点让全球Chrome笔记本变砖
  4. oracle的imp和exp
  5. 考研【研究所和高校的区别、全国375所独立于高校系统之外的 “研究生所”】
  6. java 气泡聊天消息_CSS3 巧妙实现聊天气泡
  7. PWM 发生器模块设计
  8. Java 8:再见手册SQL,您好!
  9. 为什么我们的软件不及印度
  10. memcpy()和memmove()函数之间区别
  11. 直击平昌!2天40位大咖的平昌区块链论坛精华都在这了!
  12. 用 JNI 进行 Java 编程(1)
  13. OpenCV视频生成报错 Incorrect library version loaded Could not open codec ‘libopenh264‘: Unspecified error
  14. JavaWeb学习(二)Maven
  15. vim 命令模式下光标移动
  16. 麻瓜python视频教程_麻瓜编程Python Web基础视频教程
  17. java解四元一次方程
  18. 【茶知识】普洱茶四大茶区的区别特点
  19. 拆轮子之Fish动画分析
  20. install在python里什么意思_python setup.py install是什么意思

热门文章

  1. pta7-3 统计不及格人数_编写程序,统计学生的成绩信息
  2. 大球分析系统_烧成系统如何提高熟料后期强度
  3. rpm安装mysql报错NOKEY_rpm包安装报错: Header V3 RSASHA256 Signature, key ID fd431d51 NOKEY
  4. jqgrid 单元格绑定点击事件_自定义事件带参数的触发过程
  5. python变量按其作用域可分为_python变量的作用域一
  6. 怎么获取codeforces的数据_原创 | codeforces 1417C,逆向思考的数据结构题
  7. 【FPGA】SRIO IP核系统总览以及端口介绍(二)(I/O Port 含义介绍)
  8. 【 FPGA 】时钟域问题简介
  9. 【FPGA】流水线学习笔记
  10. SaaS创业型企业如何打破销售瓶颈?