黑马程序员技术交流社区
标题:
有关构造函数
[打印本页]
作者:
李前进
时间:
2014-4-11 17:39
标题:
有关构造函数
private LinkedList link= new LinkedList();
与
private LinkedList link;
DuiLie()//构造函数
{
link = new LinkedList();
}
有什么不一样?用构造函数有什么好处吗?
作者:
Monkey·D·Chas
时间:
2014-4-11 17:52
构造函数一般是给类初始化成员用的 如果你的类里面有需要初始值的 就可以用构造函数赋值。
假如写了一个带参数的构造函数。那么系统就不会给你默认的构造函数了
所有最好自己写一个带空参数的
作者:
H._张_♂
时间:
2014-4-11 19:15
本帖最后由 H._张_♂ 于 2014-4-11 19:19 编辑
第一种情况叫做初始化后立即赋值
import java.util.LinkedList;
public class Test5 {
public static void main(String[] args) {
// 调用DuiLie,并创建实例对象
DuiLie duiLie = new DuiLie();//当new DuiLie()时,栈中先有一个link引用指向堆中的一个LinkedList实例对象
}
}
class DuiLie {
private LinkedList link = new LinkedList();//这叫一次性赋值。创建引用后直接复制
DuiLie(){System.out.println(link);}//构造函数可以省略,输出[]。
}
复制代码
第二种叫做初始化后二次赋值
import java.util.LinkedList;
public class Test5 {
public static void main(String[] args) {
// 调用DuiLie,并创建实例对象
DuiLie duiLie = new DuiLie();
}
}
class DuiLie {
private LinkedList link;//在java中jvm一律赋初值。这里为null;
DuiLie(){
System.out.println(link);//输出null
link = new LinkedList();
System.out.println(link);//输出[] 表示link为空
}
}
复制代码
至于好处,我觉得应该是延迟加载的问题。
作者:
jingdou56
时间:
2014-4-11 20:00
第一种
当类加载的时候,该对象就初始化了,堆内存中就会给该对象开辟空间
第二种
当建立该类的对象时,才初始化对象,你有需要的时候才会在内存中开辟空间!
对象的值一般是有构造函数传过来的,这样更灵活一点,
比如你这个类中的对象需要改变时,你需要去改原来的代码,
而第二种,如果加了参数,建立对象时,直接修改参数就好了!
作者:
宋丹
时间:
2014-4-11 20:48
第一种是直接初始化,也叫做成员变量显示初始化,在new对象的时候,堆内存开辟空间,private LinkedList link默认初始化值为null,因为它是引用数据类型,然后显示初始化为new LinkedList();
第二种是堆内存开辟空间时,private LinkedList link默认为null,然后通过构造函数传递参数初始化
作者:
四川男人
时间:
2014-4-11 22:24
第一种是直接声明类的对象,并且初始化,第二种是用另一个类的构造函数来初始化对象,有点儿延迟加载的感觉。看看其他人怎么说
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2