大家看我对构造函数的理解是不是对?

井中老男孩 2003-05-19 12:36:42
class A{
int i;
{
i=5;
}
public A(int num){
i=num;
}
}

编译器编译后生成的构造函数应该是这样的:

public A(int num){
//先调用父类构造
super();
//初始化类中的实例对象或实例变量
i=0;
//执行动态块代码,结果i=5

//最后执行用户代码
i=10;
}

不知道我的理解对不对?请指教,如果不对,请指明在那本书里有正确的说明,如果对,也请指明在那本书里有正确的说明。
...全文
45 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
heface 2003-05-26
  • 打赏
  • 举报
回复
up
htlong 2003-05-22
  • 打赏
  • 举报
回复
up
yhzcsdn 2003-05-22
  • 打赏
  • 举报
回复
up
井中老男孩 2003-05-21
  • 打赏
  • 举报
回复
up
AndrewCSDN 2003-05-19
  • 打赏
  • 举报
回复
你好, 梦湘

当你创建一个新的 instance 的时候, JVM 首先要做的是找到 这个instance 的.class
并给它足够的Memory Space, 一旦有足够的Memory space, JVM 就会把这个instance 和这个
instance父类 所有的int type 初始为0 (i = 0 在你的程序中), 所有的 reference variable 全初始为null(对,是在super() 之前),注意在这里 0 和 null都称为 默认值 (default value)

然后再用构造函数中的super(),等到super返回之后,构造函数会调用instance nitializer
,i = 5 被调用,在接下来是构造函数中的i=num

参考java language specification, section 12.5
http://java.sun.com/docs/books/jls/second_edition/html/execution.doc.html#44411
井中老男孩 2003-05-19
  • 打赏
  • 举报
回复
还有:
No exceptions are subclasses of Error.
这句话对吗?
井中老男孩 2003-05-19
  • 打赏
  • 举报
回复
没有人吗?

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧