A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何仕映 中级黑马   /  2013-3-26 16:11  /  1677 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何仕映 于 2013-3-26 23:21 编辑

为什么以下程序运行的结果会是153呢?在231前面加个0为什么就变成了153呢?为什么不是0231呢?
  1. class  IntegerDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 sop(Integer.toString(0231));
  6.         }


  7.         public static void sop(Object obj)//打印
  8.         {
  9.                 System.out.println(obj);
  10.         }

  11. }
复制代码

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-26 18:45

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

4 个回复

正序浏览
你用的是八进制的书写方式,例如:0x是16进制的表达方式,0是8进制的表达方式。
如果你想输出标准的0231,只能是用字符串形式了。
回复 使用道具 举报
231在前面加上0,就由10进制变成了8进制数据:
    0231转成10进制就是153了.

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
231这个数值前面加一个“0”则表示的是八进制数了,0231转成十进制是2*8^2+3*8^1+1*8^0=128+24+1=153;
整数类型包括二进制,十进制,八进制,十六进制,包装类Integer的方法:static String toString(int i)  返回一个表示指定整数的 String 对象。
返回值以十进制的字符串形式体现。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 天下 于 2013-3-26 16:37 编辑

八进制0231的十进制是153  因为你在数字前面加了0使得转换程序把它认为是8进制了  所以你打印出来的值是153  如果你把0231的0去掉就可以打印出来153了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马