设为首页 - 加入收藏
广告 1000x90
您的当前位置:78345黄大仙白小姐管家 > 静态域 > 正文

关于JAVA域的初始化

来源:未知 编辑:admin 时间:2019-06-26

  JAVA的相关书中提到,域不管实际位置在哪,都会全部初始化为默认值,然后在根据程序进行复制。但下面这段程序System.out.println(b)会报错,但按照书中的说法b会先初始化为默认值0。为...

  JAVA的相关书中提到,域不管实际位置在哪,都会全部初始化为默认值,然后在根据程序进行复制。但下面这段程序System.out.println(b)会报错,但按照书中的说法 b会先初始化为默认值0。为什么报错

  的确为“非法向前引用”,但我在CoreJava中没有找到有关解释。可否给我一个有关的链接

  不管是静态还是实例,这个程序报出非法向前引用“。而且我看CoreJava中写到,“在类第一次加载的时候,将会进行静态域的初始化”.所以我想跟静态还是实例没有关系。但找不到有关非法向前引用“的解释展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部这个可以用参照Java程序的加载过程来解释,其中有一条就是,“在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。”

  也就是说静态域初始化(也就是 static int a=...)和块初始化(也就是 static{...})是按声明的顺序执行的。

  那么 System,out.println(b)将会在 static int b之前执行,而此时b还未声明。 而a是没问题的。

本文链接:http://thomasdrymon.com/jingtaiyu/426.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top