IOStream 将数据写入控制台

我已经读到在输出字节输出流时只使用了低阶 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的。


隔江千里
浏览 165回答 3
3回答

暮色呼如

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

温温酱

因为对于 ASCII 字符,0065对于十进制是八53进制。0x355

杨__羊羊

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 decimalSystem.out.println(x); // 0065 is octal value when you convert to decimal it will be 53 and in hexa 35int y = 056;//octal valueSystem.out.println(y); // Output:46 decimal value }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java