thinking in java(II)–control

相對C++而言,Java畢竟是更為純粹的OOP語言,甚至,它本身也就是一個object這句話很精闢的說明了許多問題。。。很多在C++中可以用面向過程思想解決的問題,在Java中也是通過物件導向思想來解決的這是Java世界的規則,契合了商業的需求,有些東西還是得犧牲的另外還有一些是特性問題吧木有了指標(其實是指向基本類型的指標)reference的使用比較安全,這也是Java一直所追求的吧當然在操作特別底層的東西的時候會有麻煩Java中不支援小生存空間變數遮蔽大生存空間變數。。。我個人在C++中就

《java編程思想》第一章 筆記

 最主要的還是關於多態的理解,記得剛看多態的第一個例子時就對產生的輸出特別不習慣。而學習的c++的多態到現在又忘了,多態這個還是有點難理解。先記下書上的有意思的東西:因為java是後期綁定的,所以在編譯的時候,編譯器的工作是確保被呼叫者法的存在,並對調用參數和傳回值執行類型檢查,但是並不知道將被執行的確切代碼。而在程式執行時,也就是java虛擬機器運行時才能確定代碼的地址,從而執行代碼!為了執行後期綁定,java使用了一小段特殊的代碼,這段代碼使用在對象中儲存的資訊來計算方法體的地址(這段代碼是

《java編程思想》第二章 筆記

 1.首先關於Object Storage Service在什麼地方。一直都存在疑問,但感覺編程不會遇到這種問題。網上也找了些,看來還需對java的虛擬機器進行瞭解才能徹底明白吧。我的理解是方法裡局部的基本類型和引用就是儲存在堆棧中,newObject Storage Service在堆中。網上說static在堆中,也沒有個確切的說法。以後再深究這東西,有用的話。2.在同一個方法中不允許重複定義一個變數,也就是說不能隱藏較大範圍的變數;這個限制倒還是很方便。int i=10;{int i=12;

thinking in java(VIII)–containers,exceptions,I/O,RTTI

對象群的最高效能選擇依然是傳統的array處於效率考量,java會在運行期進行邊界檢查容器類僅能持有reference,持有對象均為object類別,這裡有一個缺憾,即容器中元素的型別未定而array可以產生直接持有基本型別數值的array,因而array分為primitive array和object

《java編程思想》暫告一段落

七月份開始讀《java編程思想》,今天讀著讀著沒動力了,所以決定告一段落。為什麼沒動力呢?讀本書的時間都是在空餘時間,有時候下班回來特別不想看,所以有時候就斷斷續續的看,發現這樣讀也沒有效率;然後,有點感覺到真的需要點java經驗才能更好的理解本書吧,而自己現在還是在做c,所以沒有用過java。沒必要再去深究下去,打了下基礎吧,等以後需要寫java時也有個好的起點吧。這本書算是2011的總結吧,從了工作外,就是讀了下這本書。儘管斷斷續續,但還是算讀過兩遍了。java的重點是物件導向、多態以及內部

《java編程思想》第四章 練習9&練習10

 不知道是什麼原因,可能在放鬆的情況下不能集中精神,這麼簡單的兩個題目硬是弄了個一小時,自己起點實在太低了。雖然說要多練習編程,可是集中不了精神也是白瞎。還是在工作中能夠全身心的投入,那樣才會有點效率吧。是不是這個原因?練習9:輸出斐波那契前num項資料,當然這裡用的是int,再大點會溢出。標出了我的錯誤,細節這些東西真是太難搞,自己學的也不咋樣。public class Fibonacci{public static void output(int num){int

JAVA環境變數的作用

 1. PATH環境變數。作用是指定命令搜尋路徑(javac/java/javadoc等),在shell下面執行命令時,它會到PATH變數所指定的路徑中尋找看是否能找到相應的命令程式。我們需要把 jdk安裝目錄下的bin目錄增加到現有的PATH變數中,bin目錄中包含經常要用到的可執行檔如javac/java/javadoc等待,設定好 PATH變數後,就可以在任何目錄下執行javac/java等工具了。2.

thinking in java(V)–composition and inheritance

再在這裡提一下初始化,reference是不被提供預設對象的,它的值是null Base class 對象被封裝於derived class 對象內因此,Java採用最安全的做法,就是在derivedclass的建構函式中首先調用baseclass的建構函式

java方法重載

前不久分享了一篇文章,將的是java動態綁定和向上轉型,說實話還沒仔細看這篇文章,自己很懶。不過對於給的第一個程式,作者的解釋是參數在編譯階段被匹配,得出的總結是重載函數的實際調用版本由編譯器綁定決定,而覆蓋函數的實際調用版本由動態綁定決定。還是有點道理,不過對於程式,我覺得剛開始看的時候,未免把他想的太複雜了。先貼上程式,我修改了點。 class Base{ public void foo(Base x){

thinking in java(IV)–encapsulation

Package 須置於其名稱所指的目錄中,由對應的環境變數classpath出發PS: Java能自動將同一個目錄中的兩個檔案視為處於同一個package中 Default存取權限被解釋為friendly 即可在同一個包內互相訪問基於兩個理由,我們實現了對存取權限的控制1.      建立一道界限,判據是用戶端程式員是否可用2.      分離介面與實現用戶端程式員只能與公用介面(在public class 中實現)打交道實現細節(在 defaultclass

thinking in java(VI)–polymorphism

實現動態綁定的所需機制1.      在執行期判知對象型別2.      調用其相應的函數  Java中的函數除了有final修飾的,均採用了動態綁定 當然,建構函式是個例外,它沒有多態性格一個包含有繼承和組合的複雜物件,其形成過程是這樣的一、分配所需heap空間並進行自動初始化,全部置為二進位零二、迴圈調用當前類直接父類的建構函式        直到當前類的父類是Object        進行當前類成員的顯式初始化,執行當前類的建構函式,回到其直接子類       

java對象的建立過程(摘自《java編程思想》)

 總結一下對象的建立過程,假設有個名為Dog的類:1.即使沒有顯式地使用static關鍵字,構造器實際上也是靜態方法。因此,當首次建立類型為Dog的對象時(構造器可以看成是靜態方法),或者Dog類的靜態方法或靜態域首次被訪問時,Java解譯器必須尋找類路徑,以定位Dog.class檔案。2.然後載入Dog.class(後面會學到,這將建立一個Class對象(確實很重要)),有關靜態初始化的所有動作都會執行。因此,靜態初始化只有在Class對象首次載入的時候進行一次。3.當用new

thinking in java(I)–object

讀這本書的時候選了第二版,完全是因為譯者是侯捷。。首先是Introduction to object   有講五條基本準則然後講對象的產生與毀滅  很多地方都是對照著C++來講的雖然網上看到很多人說這書不適合初學者看,個人覺得可以直接上手的尤其是C++陣營的人,對大學生來說好多也是從C++過渡而來的,基礎好的可以看當然有些奧秘不是看一兩遍書就能參透的

thinking in java(VII)–interfaces and inner classes

C++中未包含這兩種機制,因而其多重繼承機制運用起來比較困難interface就像是一種更abstract的class內含資料成員組成一個常量群,函數有形式無實現interface通過繼承和組合來擴充inner classes 的用途有名稱隱藏,程式碼組織和串連外圍對象將inner classes置於任意程式範疇之內的理由1.實現某種interface然後返回某個引用2.用一個類解決一個複雜的問題,但你又不希望這個類被外界所用額外性質:1.inner

thinking in java(III)–initialization and cleanup

今天看了第四章Initialization and Clean up建構函式是自然而又有效一個設定建構函式被調用前,對象的自動初始化動作不受程式員控制,但是調用後對象會處於你所希望的狀態關於建構函式的argument list能夠進行寬化轉型,但是窄化轉型需要明確的標識,具體參見書中冗長的例子。。。記憶清除,這是和C++迥異的地方三句話,大體描述了整個機制1.記憶體回收不等於析構2.對象可能不會被回收3.記憶體回收只回收記憶體         

Java中任意複雜度的深Clone

在Java中,假定由一個類A,要實現深Clone,只需簡單地同時做到下面兩點即可:1. A類要實現Serializable介面。例如:   class A implements Serializable   {      ...   } 2. 在A類中加入下面的方法:   public A Clone()    // Deep clone for object of any complexity   {       try       {          

Java學習第二回:JAVA中包的概念瞭解:似懂非懂

        說是似懂非懂是因為瞭解的實在是很少,但還是想寫出來,以作紀念及記憶。        C++與C#都有命名空間的概念,JAVA中包的概念應該是提供了與命名空間相似的概念。我所知道的關於命名空間的作用是非常有限的,在C++中,編譯器需要一個命名空間來區分相同名字的函數,類等,JAVA中也是相同的,且JAVA中相應包的命名還是有些講究的。若包名為A點B點C,那麼相應這個包裡的類就應該放在檔案夾:A杠B杠C杠下。       

JAVA學習第三回:JAVA文法基礎:大致瞭解

        意識流是來源於心理學的詞彙,描述了意識的自然流動,關於JAVA文法方面,我希望我想到哪兒寫到哪兒,會很亂,但我想,我會很享受以後再重新讀這篇文章的。        據稱,JAVA的基礎文法與C和C++有百分之八九十的相似,所以我在這裡想到的應該大多數都是C或C++的一些基礎文法。       

JAVA學習第四回:JAVA記憶體配置與記憶體回收機制:白頭而新

        小程式寫過不少,但對於各種記憶體配置還知之甚少,這回學習JAVA,對這些有了一些淺顯瞭解,寫出來,備忘。        對於一些原始類型,我們稱為實值型別,通常分配的記憶體空間在棧中,而對於通過new建立的類型,則在堆中。用代碼來解釋比較好。 public String cursor;public int teachAge;Visitor visitor = new Visitor();       

將java的對象序列化成檔案,並從檔案中還原序列化。

package Sample; public class Sample{    public static void main(String[] args)        throws Exception    {        java.io.ObjectOutputStream os = new java.io.ObjectOutputStream(new java.io.FileOutputStream("Object.out"));        

總頁數: 4058 1 .... 649 650 651 652 653 .... 4058 Go to: 前往

聯繫我們

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