黑马程序员技术交流社区

标题: 关于在构造函数内初始化对象和类成员初始化对象的区别 [打印本页]

作者: 练习题    时间: 2014-7-31 11:41
标题: 关于在构造函数内初始化对象和类成员初始化对象的区别
想到一个问题,就是构造函数内初始化对象和类成员初始化对象有没有什么区别,都是在对象被创建的时候初始化的.比如
class Person
{
public Test t = null;//构造函数初始化对象
public Person()
{
t = new Test();
}

public Test t1 = new Test();//类成员直接初始化对象


}
class Test
{

}

作者: 练习题    时间: 2014-7-31 13:13
有谁知道吗,帮帮忙
作者: liubea    时间: 2014-7-31 13:59
代码有问题,会进入死循环。
作者: 黄宝宝    时间: 2014-7-31 14:09
我看不懂!
作者: 练习题    时间: 2014-7-31 16:18
liubea 发表于 2014-7-31 13:59
代码有问题,会进入死循环。

晕不是我只是举一个例子,不是让你跑代码
作者: 练习题    时间: 2014-7-31 16:19
黄宝宝 发表于 2014-7-31 14:09
我看不懂!

构造函数可以初始化一个对象是吧,  定义类成员对象的时候也可以直接初始化创建对象的是吧,就是说这两种有什么区别
作者: fantacyleo    时间: 2014-7-31 16:28
练习题 发表于 2014-7-31 16:19
构造函数可以初始化一个对象是吧,  定义类成员对象的时候也可以直接初始化创建对象的是吧,就是说这两种有 ...

定义时直接初始化,那就是把初始化的内容写死了啊。通过向构造函数传递参数,可以按需初始化
作者: 练习题    时间: 2014-7-31 17:34
fantacyleo 发表于 2014-7-31 16:28
定义时直接初始化,那就是把初始化的内容写死了啊。通过向构造函数传递参数,可以按需初始化 ...

恩恩 谢谢,知道了
作者: Bule丶    时间: 2014-7-31 17:39
你的Person类如果有别的构造函数,你在实例化的时候显示指定了某个构造函数,无参构造函数里的Test类就不会被实例化,如果你直接调用了会报空指针异常,但是外面的不会,外面的在你的Person类实例化的时候就会被同时实例化
作者: 练习题    时间: 2014-7-31 18:00
Bule丶 发表于 2014-7-31 17:39
你的Person类如果有别的构造函数,你在实例化的时候显示指定了某个构造函数,无参构造函数里的Test类就不会 ...

嗯 谢谢!
作者: Bule丶    时间: 2014-7-31 18:03
练习题 发表于 2014-7-31 18:00
嗯 谢谢!

我的理解是这样的,除非有Hibernate的对象关系映射应该是不会为null的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2