IOStream将数据写入控制台

时间:2019-02-19 06:27:26

标签: java

我读到字节输出流的输出时仅使用低8位,那么为什么我得到5? 另外,为什么我没有得到65的二进制或十六进制格式?

如果我删除前2个零并将b的值设为65,则得到“ A”作为答案,但是为什么放置前2个零却没有得到答案,而是“ 5”?

为什么我以字符而不是以二进制格式得到答案,因为'out'是Byte OutputStream对象,应该以字节为单位?

    public static void main(String[] args) {
        int b = 0065;
        System.out.write(b);
        System.out.flush();

    }

需要'A',实际为5?

还需要0100 0001

3 个答案:

答案 0 :(得分:0)

out中的静态字段java.lang.System具有类型java.io.PrintStream。  类PrintStream有几个write()方法。在代码中,您传递给方法write()的参数是int,因此方法invokde是write(int)。您正在为本地变量b分配数字文字。在Java中,以零(0)开头的数字文字表示一个八进制数字,八进制的 65 以十进制的53(五十三)和53是数字5的ASCII码(五)。仅供参考,类java.lang.Integer具有静态方法toBinaryString()。我建议您查看该方法的javadoc。

答案 1 :(得分:0)

public class StackOverFlow{

 public static void main(String []args){

    int x = 0065;// in java when you append zero like 011 or 0023 its take as octal number,when you print it will convert to decimal

System.out.println(x); // 0065 is octal value when you convert to decimal it will be 53 and in hexa 35

int y = 056;//octal value

System.out.println(y); // Output:46 decimal value



 }
}

答案 2 :(得分:0)

因为对于ASCII字符006553十进制是八进制,0x35是十六进制5