java對象及引用
① java中,"對象引用"和"對象"問題
a只是保存了引用,也就是對象的地址,真正的對象就是new出來的那個
所以a 可以指向new a 也可以指向new b, 運行時會根據地址獲取真正的對象
② Java中的對象和對象引用
在Java中有一句比較流行的話,叫做「萬物皆對象」,這是Java語言設計之初的理念之一。要理解什麼是對象,需要跟類一起結合起來理解。下面這段話引自《Java編程思想》中的一段原話:
「按照通俗的說法,每個對象都是某個類(class)的一個實例(instance),這里,『類』就是『類型』的同義詞。」
從這一句話就可以理解到對象的本質,簡而言之,它就是類的實例,比如所有的人統稱為「人類」,這里的「人類」就是一個類(物種的一種類型),而具體到每個人,比如張三這個人,它就是對象,就是「人類」的實例。
何為對象的引用
我們先看一段話:
「每種編程語言都有自己的數據處理方式。有些時候,程序員必須注意將要處理的數據是什麼類型。你是直接操縱元素,還是用某種基於特殊語法的間接表示(例如C/C++里的指針)來操作對象。所有這些在 Java 里都得到了簡化,一切都被視為對象。因此,我們可採用一種統一的語法。盡管將一切都「看作」對象,但操縱的標識符實際是指向一個對象的「引用」(reference)。」
這段話來自於《Java編程思想》,很顯然,從這段話可以看出對象和對象引用不是一回事,是兩個完全不同的概念。舉個例子,我們通常會用下面這一行代碼來創建一個對象:
Person person = new Person("張三");
有人會說,這里的person是一個對象,是Person類的一個實例。
也有人會說,這里的person並不是真正的對象,而是指向所創建的對象的引用。
到底哪種說法是對的?我們先不急著糾結哪種說法是對的,再看兩行代碼:
Person person;
person = new Person("張三");
這兩行代碼實現的功能和上面的一行代碼是完全一樣的。大家都知道,在Java中new是用來在堆上創建對象用的,如果person是一個對象的話,那麼第二行為何還要通過new來創建對象呢?由此可見,person並不是所創建的對象,是什麼?上面的一段話說的很清楚,「操縱的標識符實際是指向一個對象的引用」,也就是說person是一個引用,是指向一個可以指向Person類的對象的引用。真正創建對象的語句是右邊的new Person("張三");
③ java中對象和對象引用的區別
1.何謂對象?
在Java中有一句比較流行的話,叫做「萬物皆對象」,這是Java語言設計之初的理念之一。要理解什麼是對象,需要跟類一起結合起來理解。下面這段話引自《Java編程思想》中的一段原話:
「按照通俗的說法,每個對象都是某個類(class)的一個實例(instance),這里,『類』就是『類型』的同義詞。」
從這一句話就可以理解到對象的本質,簡而言之,它就是類的實例,比如所有的人統稱為「人類」,這里的「人類」就是一個類(物種的一種類型),而具體到每個人,比如張三這個人,它就是對象,就是「人類」的實例。
2.何謂對象引用?
我們先看一段話:
「每種編程語言都有自己的數據處理方式。有些時候,程序員必須注意將要處理的數據是什麼類型。你是直接操縱元素,還是用某種基於特殊語法的間接表示(例如C/C++里的指針)來操作對象。所有這些在 Java 里都得到了簡化,一切都被視為對象。因此,我們可採用一種統一的語法。盡管將一切都「看作」對象,但操縱的標識符實際是指向一個對象的「引用」(reference)。」
這段話來自於《Java編程思想》,很顯然,從這段話可以看出對象和對象引用不是一回事,是兩個完全不同的概念。舉個例子,我們通常會用下面這一行代碼來創建一個對象:
Person person = new Person("張三");
有人會說,這里的person是一個對象,是Person類的一個實例。
也有人會說,這里的person並不是真正的對象,而是指向所創建的對象的引用。
到底哪種說法是對的?我們先不急著糾結哪種說法是對的,再看兩行代碼:
Person person;
person = new Person("張三");
這兩行代碼實現的功能和上面的一行代碼是完全一樣的。大家都知道,在Java中new是用來在堆上創建對象用的,如果person是一個對象的話,那麼第二行為何還要通過new來創建對象呢?由此可見,person並不是所創建的對象,是什麼?上面的一段話說的很清楚,「操縱的標識符實際是指向一個對象的引用」,也就是說person是一個引用,是指向一個可以指向Person類的對象的引用。真正創建對象的語句是右邊的new Person("張三");
④ java中對象和對象的引用的區別
1.什麼是對象?
在Java中有一句比較流行的話,叫做「萬物皆對象」,這是Java語言設計之初的理念之一。要理解什麼是對象,需要跟類一起結合起來理解。下面這段話引自《Java編程思想》中的一段原話:
「按照通俗的說法,每個對象都是某個類(class)的一個實例(instance),這里,『類』就是『類型』的同義詞。」
從這一句話就可以理解到對象的本質,簡而言之,它就是類的實例,比如所有的人統稱為「人類」,這里的「人類」就是一個類(物種的一種類型),而具體到每個人,比如張三這個人,它就是對象,就是「人類」的實例。
2.何謂對象引用?
我們先看一段話:
「每種編程語言都有自己的數據處理方式。有些時候,程序員必須注意將要處理的數據是什麼類型。你是直接操縱元素,還是用某種基於特殊語法的間接表示(例如C/C++里的指針)來操作對象。所有這些在 Java 里都得到了簡化,一切都被視為對象。因此,我們可採用一種統一的語法。盡管將一切都「看作」對象,但操縱的標識符實際是指向一個對象的「引用」(reference)。」
這段話來自於《Java編程思想》,很顯然,從這段話可以看出對象和對象引用不是一回事,是兩個完全不同的概念。舉個例子,我們通常會用下面這一行代碼來創建一個對象:
Person person = new Person("張三");
有人會說,這里的person是一個對象,是Person類的一個實例。
也有人會說,這里的person並不是真正的對象,而是指向所創建的對象的引用。
到底哪種說法是對的?我們先不急著糾結哪種說法是對的,再看兩行代碼:
Person person;
person = new Person("張三");
這兩行代碼實現的功能和上面的一行代碼是完全一樣的。大家都知道,在Java中new是用來在堆上創建對象用的,如果person是一個對象的話,那麼第二行為何還要通過new來創建對象呢?由此可見,person並不是所創建的對象,是什麼?上面的一段話說的很清楚,「操縱的標識符實際是指向一個對象的引用」,也就是說person是一個引用,是指向一個可以指向Person類的對象的引用。真正創建對象的語句是右邊的new Person("張三");
再看一個例子:
Person person;
person = new Person("張三");
person = new Person("李四");
這里讓person先指向了「張三」這個對象,然後又指向了「李四」這個對象。也就是說,Person person,這句話只是聲明了一個Person類的引用,它可以指向任何Person類的實例。這個道理就和下面這段代碼一樣:
int a;
a=2;
a=3;
這里先聲明了一個int類型的變數a,先對a賦值為2,後面又賦值為3.也就是說int類型的變數a,可以讓它的值為2,也可以為3,只要是合法的int類型的數值即可。
也就是說,一個引用可以指向多個對象,而一個對象可不可以被多個引用所指呢?答案當然是可以的。
比如:
Person person1 = new Person("張三");
Person person2 = person1;
person1和person2都指向了「張三」這個對象。
⑤ java中的對象的引用指什麼
new KKK()創造了一個對象,類型是KKK。
而KKK a則創造了一個可以存儲KKK類型對象引用的「引用存儲器」。
而等號=則把new KKK()這個對象的引用存到了a之中,這樣你就可以用a來使用這個對象數據和方法了。
再舉個例子,
String a=new String("asdf");//這里把"asdf"代表的對象的引用存到了a中
a=new String("fdsa");//這里又把另一個對象"fdsa"存到了a中,所以a就不是指向原來的"asdf"了,而是"fdsa"了
System.out.println(a);//這里輸出的結果如我們預料的一樣,是"fdsa"
⑥ JAVA:」對象的引用「是什麼意思
JAVA:」對象的引用「意思是定義一個變數,這個變數指向的是一個對象,所以叫對象的專引用。屬
Objectobj=newObject();
//obj:對象的引用
//newObject():對象
//Object:類
⑦ java 的對象和對象的引用
這只是叫法而已,只要知道本質是什麼就可以了,說實在的,我剛開始學的時候也納悶,不過很快就轉變過來了,哈哈,這很正常,畢竟初學者都是在解決疑問中成長起來的
⑧ java有幾種對象引用
1.強引用(StrongReference)
強引用是java中最常見的一種引用方式,當一個程序創建一個對象,並把這個對象賦給一個引用變數,程序通過該引用變數操作實際的對象.當一個對象被一個或一個以上的引用變數所引用時,它處於可達狀態,不可能被系統垃圾回收機制回收。
2.軟引用(SoftReference)
軟引用需要通過SoftReference類來實現,當一個對象只有軟引用時,它有可能被垃圾回收機制回收。對於只有軟引用的對象而言,當系統內存空間足夠時,它不會被系統回收,程序也可使用該對象;當系統內存空間不足時,系統可能會回收它。軟引用通常用於對內存比較敏感的程序中。
3.弱引用(WeakReference)
弱引用通過WeakReference類實現,弱引用和軟引用很像,但弱引用的引用級別更低。對於只有弱引用的對象而言,當系統垃圾回收機制運行時,不管系統內存是否足夠,總會回收該對象所佔用的內存。當然,並不是說當一個對象只有弱引用時,它就會立即被回收——正如那些失去引用的對象一樣,必須等到系統垃圾回收機制運行時才會被回收。
4.虛引用(PhantomReference)
虛引用通過PhantomReference類實現,虛引用完全類似於沒有引用。虛引用對對象本身沒有太大影響,對象甚至感覺不到虛引用的存在。如果一個對象只有一個虛引用時,那麼它和沒有引用的效果大致相同。虛引用主要用於跟蹤對象被垃圾回收的狀態,虛引用不能單獨使用,虛引用必須和引用隊列聯合使用
⑨ java中如何引用對象
Object obj = new Object();
obj就是引用