为了账号安全,请及时绑定邮箱和手机立即绑定

IOStream 将数据写入控制台

IOStream 将数据写入控制台

隔江千里 2022-06-23 20:28:13
我已经读到在输出字节输出流时只使用了低阶 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 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

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。



查看完整回答
反对 回复 2022-06-23
?
温温酱

TA贡献1752条经验 获得超4个赞

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



查看完整回答
反对 回复 2022-06-23
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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




 }

}


查看完整回答
反对 回复 2022-06-23
  • 3 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号