A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘佳 中级黑马   /  2012-9-3 09:45  /  1370 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘佳 于 2012-9-4 06:42 编辑

class Queue
{
private LinkedList link;
Queue()
{
  link = new LinkedList();
}
}
------------------------------------------------------------------------------------------
class Queue
{
Queue()
{
  LinkedList link = new LinkedList();
}
}

以上两段代码有何区别

4 个回复

倒序浏览
第一个Queue中的link变量是类的成员变量。而第二个Queue中的link 是放在构造方法中的,所以第二个link是局部变量
回复 使用道具 举报
虽然都是对LinkedList进行了初始化,但是上一段代码,是把link作为成员变量,然后在构造方法中为其初始化,下一段代码,直接在构造方法中定义并初始化,不同的是,当在类中创建一个对象时,上一段代码的link可以被对象访问到,而下面的代码,对象就访问不到了
回复 使用道具 举报
第一个link变量是类的成员变量,第二个link是局部变量。在Java中,局部变量必须初始化;成员变量可以不用初始化,系统自动初始化。
区别:
1.成员变量在类中,局部变量在方法中      
2.声明成员变量时可以不初始化(被final修饰且没有static的必须显式赋值),而局部变量必须手动初始化    3.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可 以定义成final型
4.成员变量存储在堆,局部变量存储在栈
5.存在时间不同     
回复 使用道具 举报
第一个Queue方法中的link变量定义在方法外部是成员变量。而第二个Queue方法中的link由于定义在方法内部,所以是局部变量
并且第二个link变量,你每调用一次Queue方法就要进行一次初始化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马