本文介绍了在java中设置大于127个int字节变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了以下示例代码:

  public static void main(String [] args)throws Exception 
{
byte number_1 = 127;
byte number_2 =(byte)128;
System.out.println(number_1 =+ number_1);
System.out.println(number_2 =+ number_2);
}



我在输出中得到以下结果:

  number_1 = 127 
number_2 = -128


b $ b

我知道一个字节范围的数据类型( -128 127 )。
我的样本是否正确?发生了什么?有二进制补码运算吗?我不明白这个行为。

解决方案

因为一个字节只能容纳高达-128到127,这是预期的行为溢出



请使用



  • I write the following sample code:

    public static void main(String[] args) throws Exception
    {
          byte number_1 =  127;
          byte number_2 =  (byte) 128;
          System.out.println("number_1 = " + number_1);
          System.out.println("number_2 = " + number_2);
    }
    

    I get the following result in output:

    number_1 = 127
    number_2 = -128
    

    I know range of a byte data type( -128 to 127).Is my sample is correct? What happened? Is there a two's complement operation? I don't understand this behavior.

    解决方案

    Because one byte can hold upto -128 to 127 only, This is expected behavior of overflow

    Check with this loop

    for(int index = 0 ; index < 258 ; index ++ ){
      System.out.println((byte)index);
    }
    

    Also See

    这篇关于在java中设置大于127个int字节变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

    10-15 14:16