1. 程式人生 > >JAVA 中一些常常混淆的概念 (整理)

JAVA 中一些常常混淆的概念 (整理)

Person person; person = new Person("張三");

  這兩行程式碼實現的功能和上面的一行程式碼是完全一樣的。大家都知道,在Java中new是用來在堆上建立物件用的,如果person是一個物件的話,那麼第二行為何還要通過new來建立物件呢?由此可見,person並不是所建立的物件,是什麼?上面的一段話說的很清楚,“操縱的識別符號實際是指向一個物件的引用”,也就是說person是一個引用,是指向一個可以指向Person類的物件的引用。真正建立物件的語句是右邊的new Person("張三");

  再看一個例子:

1 2 3
Person person; person = new Person("張三"); person = new Person("李四");

  這裡讓person先指向了“張三”這個物件,然後又指向了“李四”這個物件。也就是說,Person person,這句話只是聲明瞭一個Person類的引用,它可以指向任何Person類的例項。這個道理就和下面這段程式碼一樣:

1 2 3 int a; a=2; a=3;

  這裡先聲明瞭一個int型別的變數a,先對a賦值為2,後面又賦值為3.也就是說int型別的變數a,可以讓它的值為2,也可以為3,只要是合法的int型別的數值即可。

 也就是說,一個引用可以指向多個物件,而一個物件可不可以被多個引用所指呢?答案當然是可以的。 比如:

1 2 Person person1 = new Person("張三"); Person person2 = person1;

  person1和person2都指向了“張三”這個物件