面对这种问题,大家应该都有这样的疑惑,我全部都是byte类型的数据,而且两个相加也并没超过byte类型的表示范围,但是为什么会报错Type mismatch: cannot convert from int to byte?

接下来为大家解惑:

n,m,b确实都是byte类型,但是在此代码中它们也是变量,两个变量相加有可能超过byte的表示范围,所以java就将右边相加的两个数由byte变成int型,再相加,这样右边的大的数据类型int就需要往小的数据类型byte转换,只能强制转换了。所以会报错。

大家再看一个代码:

这个代码当中右边直接给出数字,java就知道3+4是否会超过byte的表示范围,如果超了便会报错代码如下,不超就不会报错;

不超的话;由于4和3默认是int,java会将3和4通过隐式类型转换成byte类型再相加。

从小的byte类型可以类型自动提升成int,所以n会自动变成int型,再相加再赋值;不需要强制转换。

读完这片博客之后,可能有很多人会有这样的两个疑问:

1、java明明知道变量的值,为什么不能判断是否超过其表示范围呢?

答:因为,变量内容的存储是在常量池,java需要先获取变量地址,再获取变量空间里的内容(存的是变量值的地址),再通过这个地址找到变量所存储的内容;这一系列的操作是在做计算时才会去做的,所以光看一个变量是无法看出是否超过范围的,而3+4直接就可以看出来。

2、为什么byte由于变量未知导致无法知道是否超过其表示范围,而会自动提升到int,int面对同样的情况为什么不自动提升到long类型呢?

答:我自己的解释是,由于byte表示范围实在是太小了,一般的数学计算都会超过它,而int型基本满足了普通程序员的绝大部分的计算需求,所以int型设置为默认类型也是这样的原因。所以byte在变量的情况下会自动提升到int,而int不会自动提升。

byte类型转换细节分析:Type mismatch: cannot convert from int to byte?出现这个报错的解决方案相关推荐

  1. Type mismatch: cannot convert from int to byte

    byte Agreement = 0x82; byte Agreement = (byte)0x82; 转载于:https://www.cnblogs.com/kaixin110/archive/20 ...

  2. Type mismatch: cannot convert from int to Object错误

    第一, 需要装 jre1.5.0及以上的版本 第二, 在eclipse的'Window' 'Preference' 'Java'里, 'Install JREs'里设置你装的jre 第三,在eclip ...

  3. Type mismatch: cannot convert from org.hibernate.annotations.CascadeType to javax.persistence.Cascad

    Type mismatch: cannot convert from org.hibernate.annotations.CascadeType to javax.persistence.Cascad ...

  4. 【MyBatis-Plus】多租户情况下使用 CONVERT(name USING gbk)实现拼音字母排序报错

    一.报错 ERROR o.jeecg.common.exception.JeecgBootExceptionHandler:71- nested exception is org.apache.iba ...

  5. .net Core 6.0 部署到欧拉(Linux)系统上,“The type initializer for ‘Gdip‘ threw an exception” 报错的解决方案

    前言 "The type initializer for 'Gdip' threw an exception" 报错的根本原因, 是因为我们使用了"System.Draw ...

  6. go iris框架 常见错误1: cannot use func literal type func报错记录 解决方案

    错误: # command-line-arguments .\IrisDemo1.go:12:26: cannot use func literal (type func("github.c ...

  7. 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )

    文章目录 一.从 Tombstone 报错日志中查找报错动态库 二.addr2line 命令行工具使用 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工 ...

  8. (JAVA)错误:Type mismatch: cannot convert from double to float ,这是什么意思?如何解决?

    目录 意思是: 错误代码: 错误信息: 错误的原因: 正确的代码: 注意! a代码: a运行结果: 意思是: 错误代码: public class bbb {public static void ma ...

  9. 报错:Type mismatch: cannot convert from Object to Car

    问题描述: 一个非常简单的spring项目,用静态工厂方法配置bean实例.项目的目录结构如下: 代码如下: Car.java 1 package com.tt.spring.beans.factor ...

最新文章

  1. Gdiplus中实现双Buffer绘图
  2. SAP反记帐和红字冲销
  3. [转载]内容首页设计经验
  4. python 局域网主机扫描_python扫描局域网主机名
  5. python课程_python课程大放送
  6. **【校招速递】入职鹅厂,算法大赛优秀选手开启职场新生活**
  7. SQLSERVER根据字符 切割字符串的方法
  8. 设计模式之Facade---外观模式
  9. 收藏!韦东山所有课程详细目录介绍(最新)
  10. 2021年泰迪杯数据挖掘赛B题数据——岩石图像的智能分类
  11. 奈奎斯特稳定判据matlab处理,控制理论-奈奎斯特稳定判据学习笔记-综合电源技术-世纪电源网社区...
  12. [BZOJ3144]切糕
  13. acrobat.exe无法找到入口无法定位程序输入点,无法识别编辑图片上文字
  14. Windows Server 2016 实现跨域、跨林之间的访问
  15. Push上传出错:Support for password authentication was removed on August 13, 2021.git did not exit cleanly
  16. 计算机教育影片观后感,2020青少年法治教育片沉重的爱观后感大全
  17. 【Unity脚本】鼠标常用点击事件
  18. SQLmap 扫描工具的使用
  19. 自定义控件之Canvas图形绘制基础练习-青春痘笑脸^_^
  20. 抖音直播限流了多久恢复,抖音直播间突然没流量了

热门文章

  1. 哈工大计算机学院考研复试分数线2021,哈工大考研分数线2021什么时候出来?
  2. 【从0到1搭建LoRa物联网】19、LoRa串口透传例程(补充)
  3. android 酷炫倒计时,Hurry - 一个有颜值又好用的倒计时应用 - Android 应用 - 【最美应用】...
  4. 1881:【14NOIP提高组】生活大爆炸版石头剪子布
  5. js如何实现随机数切换
  6. 手动挡五个档位示意图_手动挡6个档位怎么推
  7. Prolific USB-to-Serial Comm Port驱动
  8. 从git提交出现“updates were rejected because a pushed branch tip is behind its remote”到提交成功解决问题的过程
  9. IBM Cloud Computing Practitioners 2019 (IBM云计算从业者2019)Exam答案
  10. 十进制数怎样转成十六进制数?