走近java對象

對象是什麼

如何創建對象

對象的賦值

對象是什麼
對象是類的一個個體,是具體的,實實在在存在的事物,它有自己的生命週期,由類可以創建出對象,對象也會消亡。
說到對象,我們就要和類已經現實中的對象拉開區別。由類可以創建對象,對象是一個個體,即具體的,而類就是具有相同的屬性和功能的事物的抽象的集合,是一個抽象的概念。當然這裏的對象和我們現實生活當中講的對象是完全不一樣的,這個大家也明白。
如何創建對象
其格式爲: 類名 對象名 = new 類名();
其中:
1.左邊的類名 對象名:定義對象的一個名字存儲在棧中。
2.new:在堆中創建對象。
3.類名():構造方法,用來初始化對象的屬性。
引用類型默認值:null
4.將對象的地址賦給對象名。
例如:

......
Data d = new Data();.....
.............
public class User {
	public String name;             //屬性
	int age;
	
	public User() {                    //構造方法
		
	}

對象有三種創建方式:
1、類名 對象名1 = new 類名();

2、類名  對象名2 = 對象名1;

3、public 類名 方法名(){  return 對象名2 ;} //get方法,方法名 get+屬性名首字母大寫
   對象名3 = 方法名();

對於基本類型的定義:例如:int a =10;
1.int a :就是定義一個int類型的變量名a儲存在棧當中;
2.而10代表將10賦給i。
講到這,我來補充一下棧和堆的概念:
棧:

(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱爲棧頂,相對地,把另一端稱爲棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成爲新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成爲新的棧頂元素。
棧作爲一種數據結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指針。
棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱爲棧頂(top),另一端爲棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數爲零時稱爲空棧。插入一般稱爲進棧(PUSH),刪除則稱爲退棧(POP)。棧也稱爲後進先出表。
棧可以用來在函數調用的時候存儲斷點,做遞歸時要用到棧!
棧(操作系統):由操作系統自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。

在這裏插入圖片描述
堆:

堆是一種基本的數據結構。在這裏我用數組來形容,在一個二叉堆的數組中,每一個元素都要保證大於等於另外兩個特定位置的元素。同時相應的,這些元素又要大於等於另外兩個相應位置的元素,整個數據結構以此類推。如果我們將整個數據結構畫成樹狀結構,就能夠清晰地看出整個結構的樣子。
在這裏插入圖片描述

對象的賦值
倘若“從一個對象到另一個對象”賦值,實際就是將句柄從一個地方複製到另一個地方。這意味着假若爲對象使用“C=D”,那麼C和D最終都會指向最初只有D才指向的那個對象。

Number n1 = new Number();
    Number n2 = new Number();
    n1.i = 9;
    n2.i = 47;
    n1=n2;    //相同類的對象之間賦值
    System.out.println(n1.i+" "+n2.i);              //輸出結果爲n1.i和n2.i都爲47
    n1.i=27;                                                    //之後再輸出n1.i和n2.i都爲27

後面改變n1的同時也改變了n2!這是因爲無論n1還是n2都包含了相同的句柄,它指向相同的對象(最初的句柄位於n1內部,指向容納了值9的一個對象。在賦值過程中,那個句柄實際已經丟失;它的對象會由“垃圾收集器”自動清除)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章