我读到字节输出流的输出时仅使用低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
。
答案 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字符0065
,53
十进制是八进制,0x35
是十六进制5
。