在LinkedList中,list.add(...)和object.list.add(...)之间有什么区别?

时间:2014-09-02 00:12:15

标签: java linked-list

我正在做一些作业,在一个练习中,我们必须复制粘贴:

class Example
{
    LinkedList<String> queue;

    //Some simple methods to add or remove from queue.

    public static void main(String[]args)
    {
        Example obj = new Example();
        obj.queue = new LinkedList<String>();

        //Basic instructions to add items to the queue
    }
}

但这让我感到困惑,我们正在制作和填写这样的列表:

LinkedList<String> queue = new LinkedList<String>();

queue.add("abc");
queue.add("bca");

现在我们必须像

一样创建它
Example obj = new Example();
obj.queue = new LinkedList<String>();

我想知道是否有任何区别:

obj.queue.add("aab");

和     queue.add(“AAB);

我知道这是非常基本的,但我缺乏一些基本概念,而且我很遗憾。

谢谢。

3 个答案:

答案 0 :(得分:2)

下面,

LinkedList<String> queue = new LinkedList<String>();

queue.add("abc");
queue.add("bca");

您正在创建一个新的LinkedList对象,其参考将分配给变量queue。然后取消引用queue,以便您可以调用其方法add

下面

Example obj = new Example();
obj.queue = new LinkedList<String>();
obj.queue.add("bca");

您正在创建Example类型的新对象,并将其引用分配给变量obj。然后取消引用obj以访问其分配了新创建的queue对象的引用的字段LinkedList。然后再次取消引用obj以访问其取消引用其值的字段queue,以便您可以在引用的add对象上调用LinkedList

考虑阅读Classes and Objects上的Java教程。

答案 1 :(得分:1)

假设您直接在方法中对名为“queue”的LinkedList进行了描述,例如:主要(), 变量队列将被视为局部变量。

另一方面,如果变量是类的一部分,例如“班级实例”, 它被认为是类的成员,假设队列的可见性是公共的或在包级别,您可以通过类引用访问该变量。

如果我的解释不够明确, 我相信以下链接可以解决您的问题。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

答案 2 :(得分:1)

LinkedList<String> queue = new LinkedList<String>();
queue.add("abc");
queue.add("bca");

您创建一个名为queue的LinkedList实例,并将“abc”,“bca”添加到此列表队列中;

Example obj = new Example();
obj.queue = new LinkedList<String>();
obj.queue.add("bca");

你的班级Example现在有LinkedList被叫队列的引用,例如,房子有门,现在你可以在这扇门上画画,但门属于房子,当房子被毁坏了,门也会被毁坏。

但在你的第一个案例中,你有一扇门,但这扇门不属于任何房屋。它是独立的。

对于你的情况下的良好练习,你应该用一种方法(比如施工人员)建造你的门,尽量不要直接把你的门送到你的邻居家,除非你需要在你的房子的控制之外。 :)

public class Example {
        private LinkedList<String> queue;// private, and no outside class can get access to it

        public Example(){
            this.queue= new LinkedList<String>();//construct the queue when you Example is constructed
        }

        public void add(String s){// add element in the control of Example 
            queue.add(s);
        }
        //Some simple methods to add or remove from queue.
        public static void main(String[]args)
        {
            Example obj = new Example();
            obj.add("abc");
            obj.add("cba");
        }
    }