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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓杰 中级黑马   /  2012-6-25 22:13  /  2975 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Test1
{
        int x=3;
        public static void main(String[] args)
        {
                int x=012;
                System.out.println(x);//结果为10,求解;已经用很多数据测试;但找不规律;
        }
}

12 个回复

倒序浏览
这个是因为012代表的是八进制数,而你打印出的是它的十进制表现形式,所以为十!

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class Test1
{
        int x=3;
        public static void main(String[] args)
        {
                int x=012;//012这是一个八进制的整数.所以是10.x是局部变量在它所属的代码块中打印的是它本身.

                System.out.println(x);//结果为10,求解;已经用很多数据测试;但找不规律;     
   }
               System.out.println(x);这里打印的结果就是3.
}
\望采纳

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
吴琼 发表于 2012-6-25 22:19
class Test1
{
        int x=3;

谢谢,看来我的基础还真得好好补补啊;
回复 使用道具 举报
呵呵,哥们基础真的很重要.学好基础了学什么都快.咱们共勉吧.都在基础加强中!!!加油
回复 使用道具 举报
class Test1
{
        int x=3;
        public static void main(String[] args)
        {
                int x=012;
                System.out.println(x);//结果为10,求解;已经用很多数据测试;但找不规律;
        }
}
答案是10
那是因为自己局部有那么就不需要找成员要了;
那么结果应该是012,而012是八进制转换成十进制结果就是10 ;所以结果就是10;
不好意思解释的有点罗嗦、、、、、
回复 使用道具 举报
王月 中级黑马 2012-6-25 23:04:26
7#
哦,这是进制的表示形式问题,0 开头的数代表8进制
如果看到 0x 开头的那是十六进制
回复 使用道具 举报
本帖最后由 游洪波 于 2012-6-25 23:09 编辑

class Test1
{
        int x=3;//你虽然在这里定义了x但是这边定义的x是不能被main方法所使用的,应为在static修饰的方法中只能引用static修饰的属性和方法        public static void main(String[] args)
        {
                int x=012;//所以你下边输出的是这个x的值,应为你x=012,输出的时候他是以0是表示以八进制数输出,所以你的答案是10                System.out.println(x);//结果为10,求解;已经用很多数据测试;但找不规律;
        }
回复 使用道具 举报
class Test1
{
        int x=3;     //这个x 并不在main函数里面,所以下面的打印输出与它无关,你可以在main函数的下面用一个输出来验证一下        public static void main(String[] args)
        {
                int x=012;
                System.out.println(x);   //这里打印的x 是指的   int x=012  ,java中以0开头的数字表示八进制,这个012表示的数字就是10       
     }
}
不知楼主懂了没有
回复 使用道具 举报
吴琼 发表于 2012-6-25 22:19
class Test1
{
        int x=3;

你这样写有结果了才怪…… 你把system……写在方法体外面你自己试试看行不行
回复 使用道具 举报
class Test1
{
        int x=3;
        public static void main(String[] args)
        {
                int x=012;//这个x是局部变量,和上面的那个不是同一个,012是八进制的数,转换成十进制就是10了   
             System.out.println(x);//结果为10,求解;已经用很多数据测试;但找不规律;
        }
}


回复 使用道具 举报
好明白了。谢谢大家
回复 使用道具 举报
Forever。 发表于 2012-6-26 00:08
你这样写有结果了才怪…… 你把system……写在方法体外面你自己试试看行不行 ...

童鞋果然心细,是我大意了,没细看方法体.嘿嘿,写到主函数外面去了.想拿到3只有传进对象了.
class Test1
{
        int x=3;
        public static void main(String[] args)
        {
                int x=012;//012这是一个八进制的整数.所以是10.x是局部变量在它所属的代码块中打印的是它本身.

                System.out.println(x);//结果为10,求解;已经用很多数据测试;但找不规律;     
                                Test1 t = new Test1();
                                System.out.println(t.x);
   }
               
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马