Java IOStream将数据写入控制台
我已经读到,当字节输出流输出时,只使用低阶8位,那么为什么我得到5位呢? 还有,为什么我没有得到65的二进制或十六进制格式 如果我删除前导的2个零,并将b的值设为65,那么我得到的答案是“A”,但为什么通过放置前导的2个零,我得到的不是答案,而是“5” 还有为什么我得到的答案是一个字符,而不是二进制格式的“out”是一个Java IOStream将数据写入控制台,java,Java,我已经读到,当字节输出流输出时,只使用低阶8位,那么为什么我得到5位呢? 还有,为什么我没有得到65的二进制或十六进制格式 如果我删除前导的2个零,并将b的值设为65,那么我得到的答案是“A”,但为什么通过放置前导的2个零,我得到的不是答案,而是“5” 还有为什么我得到的答案是一个字符,而不是二进制格式的“out”是一个Byte OutputStream对象,应该用字节写 public static void main(String[] args) { int b = 0
Byte OutputStream
对象,应该用字节写
public static void main(String[] args) {
int b = 0065;
System.out.write(b);
System.out.flush();
}
期望的“A”,实际的5
另外,类
java.lang.System
中所需的0100 0001静态字段out
具有类型java.io.PrintStream
。
类PrintStream
有几个write()
方法。在代码中,传递给方法write()
的参数是int
,因此方法invokde是write(int)
。您正在为局部变量b
分配一个数字文本。在java中,以零(0)开头的数字文字表示八进制数,八进制中的65表示十进制中的53(五十三),53表示数字5(五)的ASCII码。请参考,类java.lang.Integer
具有静态方法tobinarysting()
。我建议您查看javadoc以了解该方法。类中的静态字段out
java.lang.System
具有类型java.io.PrintStream
。
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
}
}
类
PrintStream
有几个write()
方法。在代码中,传递给方法write()
的参数是int
,因此方法invokde是write(int)
。您正在为局部变量b
分配一个数字文本。在java中,以零(0)开头的数字文字表示八进制数,八进制中的65表示十进制中的53(五十三),53表示数字5(五)的ASCII码。请参考,类java.lang.Integer
具有静态方法tobinarysting()
。我建议您查看javadoc以了解该方法。因为0065
是十进制的八进制53
对于十六进制0x35
对于ASCII字符5
,因为0065
对于十六进制0x35
对于ASCII字符5
是十进制的八进制
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
}
}