首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复此错误:不兼容类型:从int到byte的可能有损转换

问如何修复此错误:不兼容类型:从int到byte的可能有损转换
EN

Stack Overflow用户
提问于 2019-09-14 21:46:24
回答 2查看 338关注 0票数 0

我完美地编写了我的java代码,但是这个错误(internal.java:21:错误:不兼容类型:从整数到字节的可能有损转换)反复出现。但是a,b,c变量是字节数据类型。所以请通过解决这个问题来帮助我们。为什么这个问题会带给我。请从技术上解释这个问题。

我已经使用了类型转换,比如a=(byte)(c+b)和它的工作。但是为什么会出现这个错误。所以请解释一下这个错误。

类内部{

代码语言:javascript
复制
public static void main(String[] args) 
{
    byte a = 20 , b = 10, c = 20 ;

    if(a<=b && a<=c)
    {
        a = c+b;

        System.out.println(a);
    }
    else if(b>=c)
    {
        a +=b;

        System.out.println(a);
    }

    else 
    {
        a+=c;

        System.out.println(a);
    }



    float t = (a/40.0f)*10;

    System.out.println("internal mark is : "+ t);
}

}

internal.java:21:错误:不兼容的类型:可能存在从整数到字节的有损转换a=(字节)c+b;^1错误

EN

回答 2

Stack Overflow用户

发布于 2019-09-14 21:52:17

java中的byte是8位大小,限制在-128到127之间。假设a= 127,b= 127这样的场景。因此,如果将a和b进行相加,则值为254,这是byte数据类型所不能支持的。

因此,当您添加两个byte类型变量时,输出将自动转换为int。所以它应该由int分配。

因此,通过隐式强制转换将a+b的输出分配给一个字节,将会溢出,并且结果将不正确。

票数 0
EN

Stack Overflow用户

发布于 2019-09-14 22:10:10

在Java中,一个字节可以容纳从-128到127的值,如果你传递的值大于127,会导致字节溢出,无法容纳它,所以它会导致异常,但当你将加法或大于127的值强制转换为字节时,它将尝试获得负范围值-128,并从那里继续重复,比如如果字节a=10;和字节b=120;然后字节c=(字节)(a+b);将返回-126,因为它是大于127的3个数字,现在它转到-128,-127和-126值将被接受。因此,为了得到这个值丢失修复,编译器会强制你接受c作为int,这样你想要的实际值就不会有损失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57936111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档