我的Thinking in Java學習筆記(一)

來源:互聯網
上載者:User
其實我早就有想寫個學習筆記的想法了。今天終於下定決心要寫了,寫的不好的地方,大家給我指正啊!其實也就是個簡化版的TIJ

第一章 對象導論
       其實這章介紹的是oop的思想,知道什麼是抽象、介面、繼承等等,其實這些我覺得沒有必要專門提出來寫一章,這個我就不介紹了
在以後的學習中,這些知識是會在裡面融會貫通的。

第二章 萬事萬物皆對象
       在java程式中,萬事萬物皆對象,即使是java程式本身,也是一個對象
       一、Reference是操縱對象之鑰匙
             c語言中是使用指標來操縱對象的,但是java呢?用的是reference來操縱對象,我習慣把他叫做控制代碼,控制代碼和對象的關係就想是電視遙控器和電視機的關係一樣,既然是這樣,那麼遙控器和電視機都是可以獨立出現的
           例如:String name;
            這個java語句只會產生句餅(遙控器),並不產生實際的對象(電視機),就想你老婆還沒生孩子之前你們就把名字給取好了一樣,控制代碼並沒有串連到實際的對象上。這個樣子寫代碼是不推薦的,一個沒有指向對象的控制代碼在調用的時候編譯器會抱錯,應當使用String name="baby";,或者使用String name =new String("baby");這裡new的意思是產生一個string類型的對象,並且這個string叫做baby。這2個方法都可以實現對象的建立。
二、所有的對象都需要你來建立
       1、儲存在那裡
             a、寄存器  這裡是核心的儲存空間,我們是沒辦法操縱的
             b、棧 (stack )這裡的存取速度快,效率高,因為這裡要求被儲存的資料有具體大小和存活時間限制,使用彈性小,這裡一般儲存的是我們的物件控點,而對象是不存在這裡的
             c、堆 (heap) 這裡是通用的儲存空間,他比stack好在編譯器不需要知道實際在heap中儲存資料的大小,也不知道這個空間需要分配多長時間,彈性好,所以用來儲存物件,但是速度要比stack慢很多
             d、靜態儲存空間(static storage)這裡是存放被聲明為static的特定成員,java對象本身是不會分配在這裡的
             e、常量儲存空間 這裡存放的是程式中的常量,常量值不會改變,最安全
             f、non-ram  流或者是持久話對象
      2、基礎資料型別 (Elementary Data Type)
             boolean char byte short int long float double void  基礎資料型別 (Elementary Data Type)的資料是不用new 來建立的,直接int i=0,不使用heap空間,他是被放在stack中的,速度快!但是假如你要是想用heap來儲存基礎資料型別 (Elementary Data Type)的話,就要使用該類型的外覆類來實現了 例如Integer  i= new Integer("0");
             注意!String不是基礎資料型別 (Elementary Data Type),她是對象!從他的定義方法就可以知道了!
       3、數組(array)
             java中的數組使用和定義上要比c中的數組更安全,當你在定義數組的時候其實產生的是一個儲存物件控點的數組,而每一個控制代碼所指向的值回被設定為null,也就是不指向任何對象
三、你不需要摧毀對象
       1、基本類型生存範圍
              java中基本類型的生存範圍是由一對大括弧決定的,在生存空間內定義的變數,只能用於生存空間結束之前
   {
         int i=1;
       {
               int i=100;//錯誤!這樣的定義在java總是不允許的!編譯器會認為i已經被定義過了
        }
   }
       2、對象的生存範圍
              對象擁有的壽命和基本類型是不一樣的,當你使用new來產生一個對象的時候,即使離開了大括弧,該對象還是存在的
   {
             String name =new Sting("baby");
   }
            控制代碼name會在大括弧的生存空間之外消失的,但是他所指向的string對象卻還在繼續佔用著記憶體,但是大家會認為大量的無用對象會佔用大量的記憶體,java中是怎麼解決的呢?他使用的是記憶體回收機制,記憶體回收行程會在特定的時間檢查使用new建立的對象,假如這些對象已經沒有控制代碼指向他們,那麼他就回把無用的對象清理掉。
四、建立新的資料類型 class
         java中既然一切全是對象,那麼是什麼來限制對象的屬性呢?通過使用類。java中使用class關鍵字來自己定義一個類
        例如:class women{ //class body}這樣你就定義一個women 類,當然這個類沒有任何屬性
        1、資料成員和方法
               一個類中,存在2中成員,一個是資料成員,一個是方法。資料成員可以是基礎資料型別 (Elementary Data Type),也可以是對象,而基礎資料型別 (Elementary Data Type)在聲明的時候系統會自動的給他賦予一個初始值
五、方法、參數、傳回值
          一個合法的方法包括名稱、參數、傳回型別、方法體 例如
        void name(int i)
       {
                return;
        }其中 名稱name()      參數int i       傳回型別 void     方法體 {},對於一個class而言,名稱+參數的組合必須是唯一的,參數也可以是空的,有一個叫test的對象允許你調用一個傳回值為string的方法getTest(),則 String name = test.getTest(); name的類型一定要和傳回值的類型相同。
        在向一個方法傳遞一個對象的時候,其實傳遞的是該對象的控制代碼(基礎資料型別 (Elementary Data Type)除外),而傳遞的物件類型一定要和方法中接受參數的參數類型相同。當你不需要方法給你返回什麼東西的時候,你可以把該方法的傳回型別設定為void,而此時方法中的return就是用來離開方法的,不需要等到他執行完畢,如果方法的傳回型別不為void的時候,你可以使用return 返回一個和傳回型別一樣的值

未完。。。。。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.