Java4Android之一切都是對象(1)

來源:互聯網
上載者:User

標籤:java4android   物件導向   基本類型   

我們總是喜歡用C++和Java作為對比,雖然,這兩者我都用過卻又相忘於江湖。而我的第一份工作,卻讓我操著一口最為古老的語言(相對它兩)C。當然,從下載庫到Android的轉換,逼迫者自己重新回到物件導向的世界。。。

1, 用引用操作對象。

在C/C++中,你可以直接操縱你的資料元素,也可以通過指標來簡介的操縱,當然,C++中還有引用,引用是一個資料元素的別名,它指向的是同一個地方(希望沒記錯)。

在Java中,一切都是對象,而對象的操縱卻是通過”引用(Reference)“。引用和對象的關係就像家裡的遙控和電視機的關係,沒有電視,遙控照樣存在,而要控制電視,需要通過遙控,當遙控沒有去控制的電視和它關聯,你去亂按,嘿嘿,不會出事,對,因為那是你家,但在Java,如果一個引用你沒有關聯對應的對象,你去操作它,向他發訊息,是會出錯的,執行階段錯誤(我只是想提醒如我的菜鳥們一定要牢記編譯時間錯誤和執行階段錯誤)。

String s;//這樣的就是引用,還沒有關聯對象。String s2="abc";//這個已經建立對象了String s3=new String("efg");//和s2一樣,建立了對象,並且關聯了Reference


2,必須由你建立所有對象

1)儲存到什麼地方

 

儲存種類
名稱 速度 說明
寄存器(Register) 最快 在CPU內部,速度最快,容量最小
堆棧(Stack) 比寄存器慢,比堆快 位於RAM,通過堆棧指標可以從處理器那裡得
到直接支援。指標向下,分配記憶體,向上回收
記憶體,速度很快
堆(Heap) 比Stack慢 位於RAM,一種通用的記憶體池,存放所有的Java
對象。好處就是靈活,缺點就是比Stack要慢
常量儲存區
(Const Value Storage)
位於RAM也可以放到ROM都可以,個人認為會比
堆棧快,因為都是定死了,直接一個地址,省去分配,
回收
非RAM儲存 一些流對象,持久化對象。可能是網路,可能是磁碟,
所以速度是慢的


2)特例:基本類型


Java中依然保留了一些非對象的基本類型。如boolean ,char, byte, short, int, long, float, double, void。為什麼要保留這種內建類型?因為在Heap裡面分配記憶體需要管理,這個時候如果一個int也搞一個對象,那麼記憶體片段就會非常嚴重。所以,為了效率,Java選擇了妥協。即保留它們。

需要說明一下:(1)Java確定了基本類型的占的位元組數,不會隨著平台而改變,這樣保持了非常好的移植性;(2)char是16位的,兩個位元組,即是Unicode編碼。(3)所有數值類型都是有符號的,沒有什麼unsigned xxx,沒有。(4)每個基本類型都有它對應的封裝器,它們是類是對象。(5)高精度計算,Java提供了BigInteger和BigDecimal。


3)數組

和C++/C的數組不一樣,Java的數組是會進行邊界檢查的,犧牲下效率換來安全。還有,建立一個Java數組,其實是建立了一個引用數組,數組裡面的每個元素都是一個引用,它遲早都是要指向真正的對象。而當還沒有指定的時候,它為null。當然,也可以建立存放基礎資料型別 (Elementary Data Type)的數組,這種若沒有初始化,就會被初始化為0.


3,永遠不需要銷毀對象

在C/C++和Java中,範圍(Scope)由花括弧的位置決定。不過!在C/C++中將一個較大範圍的變數”隱藏“起來的做法,在Java中是不允許的。因為Java設計者覺得這樣會導致程式混亂。

{    int x = 12;    {         int x=96;    }}
上述代碼是在C/C++合法,在Java非法的。

在Java中,引用的範圍完成之後,它指向的對象並不一定就立馬回收的。你也不用擔心對象記憶體外泄。這些工作都交給記憶體回收行程去做。










Java4Android之一切都是對象(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.