【问题标题】:assigning value to the byte给字节赋值
【发布时间】:2011-07-23 12:32:41
【问题描述】:

这两者有什么区别

Byte i1=new Byte(1);//complier error
byte b=1;//ok

我的问题是关于将值 1 分配给 byte ,其中 1 是 int 字面量。 但是当将 1 传递给 Byte 类构造函数时,它会给出错误

【问题讨论】:

    标签: java byte wrapper


    【解决方案1】:

    Byte 是一个对象。 byte 是一个原语。除此之外,这意味着Byte 引用可以保存null

    【讨论】:

      【解决方案2】:

      如果我没记错的话,字节和字节是两个不同的关键字。

      还是Java不区分大小写?

      【讨论】:

        【解决方案3】:

        Byte i1 是一个对象,而byte b 是一个原始类型。 new Byte(int) 不是 Byte 对象的有效构造函数。见here

        【讨论】:

          【解决方案4】:

          Byte i1=new Byte(1);//编译器错误

          错误是因为 Byte 构造函数只接受 byteString 对象作为值

          http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Byte.html#Byte(byte)

          【讨论】:

            【解决方案5】:

            值 1 是整数类型的文字。所以你有以下几种情况:

            • 将文字直接分配给byte 类型的变量将导致隐式转换,因为很明显程序员想要的是字节而不是整数。

            • Byte ctor 采用 byte 值,编译器抱怨因为它无法对方法或 ctor 参数进行隐式转换。

            【讨论】:

              【解决方案6】:

              会发生编译时错误,因为您将整数传递给 Wrapper 类 Byte 的构造函数,编译器不会在此处进行隐式转换。

              方法调用转换具体不包括整数常量的隐式缩小,这是赋值转换的一部分。

              【讨论】:

                【解决方案7】:

                “Byte”是一个Class,“byte”是默认数据类型之一。 类似的例子是“Integer”和“int”。

                回到问题,编译来自字节接受“字节”或“字符串”作为参数。 所以,请尝试将代码修改为

                Byte i1=new Byte((byte)1);
                

                Byte i1=new Byte("1");
                

                【讨论】:

                  猜你喜欢
                  • 2023-03-13
                  • 2019-06-27
                  • 2012-05-24
                  • 2013-05-16
                  • 2021-12-04
                  • 2011-10-10
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多