ITPUB??ì3
ITPUB论坛 » Java入门与认证版 » 看看它的运行结果,说下为什么


标题: 看看它的运行结果,说下为什么
离线 cyntha80
中级会员



精华贴数 1
个人空间 0
技术积分 3835 (367)
社区积分 2 (29893)
注册日期 2007-2-8
论坛徽章:20
开发板块每日发贴之星生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠
生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠

发表于 2008-4-18 16:45 
看看它的运行结果,说下为什么

public class Sample{

  static int a=1;
  static{ a=2;}
  static {  a=4;}
   public static void main(String[] args){
       a++;
       System.out.println("a="+a);
  }


}


只看该作者    顶部
离线 hanfeishu
中级会员



精华贴数 0
个人空间 0
技术积分 3382 (424)
社区积分 0 (1283822)
注册日期 2007-2-28
论坛徽章:19
开发板块每日发贴之星生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠
生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠

发表于 2008-4-18 16:46 
这涉及到类的加载顺序,
等类加载完静态快时,a=4,然后在main方法中a++;这时a=5;
所以输出是5


只看该作者    顶部
离线 cayman811
高级会员



精华贴数 3
个人空间 0
技术积分 7837 (157)
社区积分 6 (14217)
注册日期 2006-8-9
论坛徽章:5
开发板块每日发贴之星开发板块每日发贴之星ITPUB新首页上线纪念徽章   
      

发表于 2008-4-18 16:46 
在main函数开始之前,先初始化a=1
                            a=2
                            a=4
在main函数体内 a++ 之后   a=5


只看该作者    顶部
离线 wjz83



精华贴数 0
个人空间 0
技术积分 22 (51052)
社区积分 5 (16121)
注册日期 2008-4-21
论坛徽章:0
      
      

发表于 2008-4-21 09:14 
同意上面


只看该作者    顶部
离线 zhour560
超级斑竹


精华贴数 0
个人空间 0
技术积分 2002 (782)
社区积分 72 (3980)
注册日期 2005-9-23
论坛徽章:8
授权会员     
      

发表于 2008-4-21 09:42 
good boy!


__________________
锐不可挡惊天地,气宇不凡乃周郎!MSN:zhour560@yahoo.com.cn,Email:zhour560@yahoo.com.cn
只看该作者    顶部
离线 rbible
庸者


精华贴数 0
个人空间 0
技术积分 239 (8248)
社区积分 14 (9320)
注册日期 2007-9-19
论坛徽章:1
2008北京奥运纪念徽章:皮划艇静水     
      

发表于 2008-4-21 22:34 
上面的代码结果是5

这段代码的结果呢? why?

public class Sample {

        static int a = 1;
        static {
                a = a++;
        }
        static {
                a = a++;
        }

        public static void main(String[] args) {
                a++;
                System.out.println("a=" + a);
        }

}


__________________
只看该作者    顶部
离线 tosz
知难而进



精华贴数 1
个人空间 0
技术积分 1282 (1320)
社区积分 19 (7614)
注册日期 2005-3-10
论坛徽章:6
授权会员2008北京奥运纪念徽章:皮划艇静水2008年新春纪念徽章设计板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-4-21 22:48 
运算顺序问题。


只看该作者    顶部
离线 iooyoo
迷眼流金


精华贴数 0
个人空间 20
技术积分 4124 (329)
社区积分 3471 (377)
注册日期 2006-6-15
论坛徽章:20
现任管理团队成员2008年新春纪念徽章    
      

发表于 2008-4-22 09:28 
这个有什么问题? ++a 和 a++ 没啥,过后就自动加一了,但是你给a赋值了啊 a= a++ 和 a=a没区别


__________________

使君欲醉离亭酒
酒醒离愁转有
紫禁多时虚右
苕霄留难久
一声歌掩双罗袖
日落乱山春后
犹有东城烟柳
青荫长依旧
只看该作者    顶部
离线 rbible
庸者


精华贴数 0
个人空间 0
技术积分 239 (8248)
社区积分 14 (9320)
注册日期 2007-9-19
论坛徽章:1
2008北京奥运纪念徽章:皮划艇静水     
      

发表于 2008-4-23 00:12 
回复 #8 iooyoo 的帖子

六层的代码运行结果为:a=2

有点难接受

两个++代码
        static {
                a = a++;
        }
        static {
                a = a++;
        }

对a的值没影响?

a= a++ 和 a=a怎么会没区别?

[ 本帖最后由 rbible 于 2008-4-23 00:13 编辑 ]


__________________
只看该作者    顶部
离线 icelander
初级会员



精华贴数 0
个人空间 0
技术积分 102 (16097)
社区积分 12 (9549)
注册日期 2004-11-20
论坛徽章:1
2008北京奥运纪念徽章:皮划艇激流回旋     
      

发表于 2008-4-23 09:57 


QUOTE:
原帖由 rbible 于 2008-4-23 00:12 发表
六层的代码运行结果为:a=2

有点难接受

两个++代码
        static {
                a = a++;
        }
        static {
                a = a++;
        }

对a的值没影响?

a= a++ 和 a=a怎么会没区别?

a++是在使用完后,才给a执行++运算,这时完成了赋值运算后,已经给a赋值为1了,所以后面的++执行完,也没有什么效果了~


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问