byte类型转换细节分析:Type mismatch: cannot convert from int to byte?出现这个报错的解决方案
面对这种问题,大家应该都有这样的疑惑,我全部都是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?出现这个报错的解决方案相关推荐
- Type mismatch: cannot convert from int to byte
byte Agreement = 0x82; byte Agreement = (byte)0x82; 转载于:https://www.cnblogs.com/kaixin110/archive/20 ...
- Type mismatch: cannot convert from int to Object错误
第一, 需要装 jre1.5.0及以上的版本 第二, 在eclipse的'Window' 'Preference' 'Java'里, 'Install JREs'里设置你装的jre 第三,在eclip ...
- 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 ...
- 【MyBatis-Plus】多租户情况下使用 CONVERT(name USING gbk)实现拼音字母排序报错
一.报错 ERROR o.jeecg.common.exception.JeecgBootExceptionHandler:71- nested exception is org.apache.iba ...
- .net Core 6.0 部署到欧拉(Linux)系统上,“The type initializer for ‘Gdip‘ threw an exception” 报错的解决方案
前言 "The type initializer for 'Gdip' threw an exception" 报错的根本原因, 是因为我们使用了"System.Draw ...
- go iris框架 常见错误1: cannot use func literal type func报错记录 解决方案
错误: # command-line-arguments .\IrisDemo1.go:12:26: cannot use func literal (type func("github.c ...
- 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )
文章目录 一.从 Tombstone 报错日志中查找报错动态库 二.addr2line 命令行工具使用 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工 ...
- (JAVA)错误:Type mismatch: cannot convert from double to float ,这是什么意思?如何解决?
目录 意思是: 错误代码: 错误信息: 错误的原因: 正确的代码: 注意! a代码: a运行结果: 意思是: 错误代码: public class bbb {public static void ma ...
- 报错:Type mismatch: cannot convert from Object to Car
问题描述: 一个非常简单的spring项目,用静态工厂方法配置bean实例.项目的目录结构如下: 代码如下: Car.java 1 package com.tt.spring.beans.factor ...
最新文章
- Gdiplus中实现双Buffer绘图
- SAP反记帐和红字冲销
- [转载]内容首页设计经验
- python 局域网主机扫描_python扫描局域网主机名
- python课程_python课程大放送
- **【校招速递】入职鹅厂,算法大赛优秀选手开启职场新生活**
- SQLSERVER根据字符 切割字符串的方法
- 设计模式之Facade---外观模式
- 收藏!韦东山所有课程详细目录介绍(最新)
- 2021年泰迪杯数据挖掘赛B题数据——岩石图像的智能分类
- 奈奎斯特稳定判据matlab处理,控制理论-奈奎斯特稳定判据学习笔记-综合电源技术-世纪电源网社区...
- [BZOJ3144]切糕
- acrobat.exe无法找到入口无法定位程序输入点,无法识别编辑图片上文字
- Windows Server 2016 实现跨域、跨林之间的访问
- Push上传出错:Support for password authentication was removed on August 13, 2021.git did not exit cleanly
- 计算机教育影片观后感,2020青少年法治教育片沉重的爱观后感大全
- 【Unity脚本】鼠标常用点击事件
- SQLmap 扫描工具的使用
- 自定义控件之Canvas图形绘制基础练习-青春痘笑脸^_^
- 抖音直播限流了多久恢复,抖音直播间突然没流量了
热门文章
- 哈工大计算机学院考研复试分数线2021,哈工大考研分数线2021什么时候出来?
- 【从0到1搭建LoRa物联网】19、LoRa串口透传例程(补充)
- android 酷炫倒计时,Hurry - 一个有颜值又好用的倒计时应用 - Android 应用 - 【最美应用】...
- 1881:【14NOIP提高组】生活大爆炸版石头剪子布
- js如何实现随机数切换
- 手动挡五个档位示意图_手动挡6个档位怎么推
- Prolific USB-to-Serial Comm Port驱动
- 从git提交出现“updates were rejected because a pushed branch tip is behind its remote”到提交成功解决问题的过程
- IBM Cloud Computing Practitioners 2019 (IBM云计算从业者2019)Exam答案
- 十进制数怎样转成十六进制数?