黑马程序员技术交流社区

标题: 语句问题 [打印本页]

作者: 黑马斯巴达    时间: 2013-1-7 23:53
标题: 语句问题
本帖最后由 谢军 于 2013-1-8 23:05 编辑

import java.util.*;class DuiLie{        private LinkedList link;//这里的link是创建好的一个集合?        DuiLie()        {                link = new LinkedList();这里是创建对象?        }

请问上面的link分别是什么?下面创建对象为什么不是这种格式LinkedList link=new LinkedList()?

作者: 黄锦成    时间: 2013-1-7 23:56
先把你的问题中的代码弄好再问吧?你贴出来的代码有点乱
作者: 黑马斯巴达    时间: 2013-1-7 23:59
黄锦成 发表于 2013-1-7 23:56
先把你的问题中的代码弄好再问吧?你贴出来的代码有点乱

import java.util.*;
class DuiLie
{
        private LinkedList link;

        DuiLie()
        {
                link = new LinkedList();
        }

作者: 肖志锋    时间: 2013-1-8 00:18
private LinkedList link;这是说这个DuiLie类,有一个LinkedList类型的属性 link,
link = new LinkedList();这一句,是在构造函数里面的初始化语句,也就是所谓的构造函数初始化,初始化属性用的,就是初始化上面那一句的。
在第一句里面,你也可以初始化,那就是所谓的显示初始化或者叫赋值,当然你也可以像第一句那样不赋值,但是因为他是对象的属性,而且是引用类型的,所以他的的默认值是null。
至于你说为什么不再加类型的原因,就是看你需求了,如果你硬要加的话,那么下面那个link就会只是一个局部变量了,只能在他定义的区域里面有用(也就是最近的一对大括号)当然这也是可以的,但问题是,在这里你这个类的属性又没有赋值,肯定是空指针异常了。说到底,就是看你的需求是什么来决定你要怎么做。
作者: 高阳    时间: 2013-1-8 00:38
import java.util.*;
class DuiLie
{
         private LinkedList link;

        DuiLie()
         {
                 link = new LinkedList();
         }
如果字段里有static这是单例模式,只能创建一个对象,你如果是
linkedList link=new linkedList();这样就米有单例性了,指向了另一个新对象

你的没有static,上面是声明,
下面是创建的对象
作者: 黄锦成    时间: 2013-1-8 09:09
谢军 发表于 2013-1-7 23:59
import java.util.*;
class DuiLie
{

private LinkedList link;定义了一个属性叫link,是LinkedList类型的,此时的link没有指向对象;在产生DuiLie对象时,为link进行了显示初始化
作者: 张森    时间: 2013-1-8 13:10
private LinkedList link  这个是在栈内存中开辟一个空间,有一个引用link,但这个时候并没有指向任何对象。
link = new LinkedList()  这个就是给上面的栈内存中的link指向一个对内存中的具体对象。
LinkedList link=new LinkedList()?  因为你上面已经定了link了 在同一个作用域里面变量名不能重复
作者: 罗利华    时间: 2013-1-8 14:07

import java.util.*;
class DuiLie {
         private LinkedList link;

        DuiLie()
         {
                 link = new LinkedList();
         }
}
这里你定义了一个私有的类的属性,只是一个属性而已,
它在栈空间中分配一个变量link,其它地方是没有的。
构造方法中的语句意思是说:将这个变量指向堆空间的一块区域,
像你这种写法和单例设计模式很近了,以下是一个单例模式,
public class Singleton {
        private static Singleton instance = new Singleton();

        public static Singleton getInstance() {
                return instance;
        }

        private Singleton() {
        }
}
毕老师视频里讲的很详细,你可以看下,
作者: 郭嘉    时间: 2013-1-8 14:21
mport java.util.*;
class DuiLie
{
        private LinkedList link;

        DuiLie()
        {
                link = new LinkedList();
        }

首先private Linkedlist link 这是在栈中定义了一个link存在,
然后new LinkedList在堆中new了一片空间,然后这片空间的地址,
例如0x0035,然后p=0x0035,然后p才真正意义上的指向了new
出来的这片空间




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