Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以将字节01设置为值_Java - Fatal编程技术网

Java 可以将字节01设置为值

Java 可以将字节01设置为值,java,Java,这里有一个小程序 public class example { private byte b1; public byte getB1() { return b1; } public void setB1(byte b1) { this.b1 = b1; } public static void main(String[] args) { final byte a = 01; example e

这里有一个小程序

public class example {  
    private byte b1;
    public byte getB1() {
        return b1;
    }
    public void setB1(byte b1) {
        this.b1 = b1;
    }
public static void main(String[] args) {    
    final byte a = 01;  
    example e =  new example();
    e.setB1(a);
    System.out.println(e.getB1());
    }
}
此程序返回值为1而不是01,但是,我希望它是01(已设置)
如果设置了01,如何从字节中获取01输出。

您需要区分文本表示和固有值

我37岁了。我也是0x25岁和045岁(八进制)-它们是相同的数字,以不同的表示形式。数字本身没有表示的概念


如果您想以特定的方式将字节转换为字符串,则应将其作为格式化的一部分进行转换,因为它不是与字节关联的数据的一部分。无论您如何初始化,该值都是相同的。

01==1==001==00000001
,它们都是相同的值。如果要更改打印方式,则需要更改打印语句

System.out.printf("%02d%", e.getB1()); // print a leading zero.

a
b1
以及
getB1
的返回值是数字,
01
1
是相同的数字,即一。如果您想保留零,可以将其更改为字符串,但不能再使用它们进行计算。

请尝试下面的另一种方法

import java.text.DecimalFormat;

public class example {   
    private byte b1;
    public byte getB1() {
        return b1;
    }
    public void setB1(byte b1) {
        this.b1 = b1;
    }
public static void main(String[] args) {    
    final byte a = 1;  
    example e =  new example();
    e.setB1(a);
    DecimalFormat df = new DecimalFormat("00");
    System.out.println( df.format(e.getB1()));
    }
}
试试下面

public static void main(String[] args) {    
    final byte a = 01;  
    example e =  new example();
    e.setB1(a);

    System.out.println(String.format("0%d", e.getB1()));
    }

您需要更改打印语句。类似下面的System.out.print(“%02d%”,e.getB1());字节是一个数字,它不包含格式信息。所以1==0x01==001(八进制)==0b00000001。@Marounnaroun它与ESC字符相同,现在您只是FS;)@Jon,如果我想将字节值存储为01,例如在DB2数据库中,如果字段是smallint,我想存储01而不是1,那么如何将smallint值设置为01(byte)@Rakesh:你不能。它们的价值基本相同。如果您关心数据的文本表示,那么应该存储一个字符串。谢谢,它可以用于显示。但是,如果01需要存储在DB中(在DB2中针对smallint),那么如何设置01?@Rakesh smallint就像Java中的一个short,它没有前导0。前导0仅用于格式化。