当前位置:  技术问答>java相关

讨论;关于Forward Referencing的问题??????

    来源: 互联网  发布时间:2015-03-27

    本文导语:  我做题目的时候遇到下面两个例子,不知道谁能把这个问题条理化一下,给出几条原则和规律吗?谢谢 // this code fragment compile error class Test            {               int i=j;               int ...

我做题目的时候遇到下面两个例子,不知道谁能把这个问题条理化一下,给出几条原则和规律吗?谢谢

// this code fragment compile error
class Test
           {
              int i=j;
              int j=10;
}
// this code fragment compile fine
class Test
{
  private int i=method();
  private int j=10;
  
  private int method()
  {
    return j;
  }
}

|
从根本上来讲的话class Test
          {
              int i=j;
              int j=10;
}
应该是没有错误的,按照java中构造的顺序来讲,上面的代码应该是等同于:
class Test
{
  int i;
  int j;
  public Test() {
  i=j;
  j=10;
  }

}
下面的这种形式在编译时并没有错误。而如果上面那种形式假设编译不出错的话,其实和下面的是一样的(编译后的结果),但是由于java编译器在设计的时候考虑到前一种形式的代码编写者的意图是想将i初始化为和j一样的值,即10,但是实际的结果是如果这样编译通过的话,初始化完成后i的值将是0而不是10,因此编译器禁止了这种前向引用以避免代码编写者的意图和程序实际编译的结果不同。而后一种情况可以由java规范解释,在进入构造方法前j实际上是已经初始化为0的,因此i此时可以进行引用,而且这个意图很明确,使用的就是j在内存分配后的初始值0。前一种情况不同,并不是太多的java程序员知道java编译器的工作过程,即:将成员变量声明时的赋值语句实际上放入构造方法中。
to Patrick_DK(疾风摩郎):
好好回顾一下我给你讲过的类构造的实际顺序。
看来我有必要再写一篇文章重申一下类构造的实际顺序。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 参数传递的问题!(大家讨论讨论)
  • 哪位高手有兴趣跟我讨论讨论java中调用dll文件??小弟有些问题还是不很清楚??
  • 和Java版高手在线讨论代理服务器的问题,讨论者都有分。
  • Java 访问控制的问题(public,private,protected,(default))!讨论讨论!
  • 这两天本版人气不高,我来发个问题,有关互斥同步的。大家讨论讨论
  • 请问这里可以讨论MINIX的问题吗?
  • 讨论linux的发展前途与有无用处问题。。。。。。。。。。。
  • LINUX下JAVA要代替C..?常跟朋友讨论的一个问题
  • 讨论LUXIN安装问题
  • 大家来讨论一个最实际的问题:)
  • 请问一下,关于arm下的嵌入式linux驱动相关问题请教是应该发在哪个讨论区?
  • 高手请进!讨论一个问题。
  • 关纯DOS下的256色、32K色、64K色问题讨论
  • 有挑战性的问题,大家一起讨论
  • 大家讨论一下指针数组的问题!
  • 老问题新讨论
  • 哇考,为什么在一个帖子里不能回复30次以上啊?这样子怎么和人家讨论问题啊?
  • 我看到大家都在讨论分数的问题,我如何看到自己的分数呢?
  • 请使用QT编程的朋友到以下网址讨论QT中遇到的问题!!!!!!!
  • Java与IE的问题!大家来讨论!
  • Java 可以做拨号程序吗?我只是和大家讨论讨论 不必太认真
  • 欢迎高手来讨论:关于文件格式的大讨论
  • 用java开发一个基于Proxy(代理)的网络计费系统。有兴趣的来讨论讨论
  • 【讨论贴】gcc开发的时候有大家都有什么好的调试方法,来讨论下
  • 讨论讨论,当错误发生时,并用if语句测试出时,应该返回怎样的值
  • 一个面试,是“北京华胜六所”外包给风河(VxWorks)北京研发处,做linux内核开发,大家过来讨论讨论
  • 新建了个QQ群(软件与创业),希望有兴趣的朋友进来讨论讨论软件项目、产品、创业、管理、投资等(代码之外的)观点和想法
  • 用java做c/s结构可行吗???大家来讨论讨论,应该都会有收获。
  • 有没有人讨论value object模式
  • http://www.itpub.net 论坛更换数据库,速度更快,欢迎大家前去讨论!
  • 讨论“内存泄漏”


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3