java 小結3 hashcode和equals I/o問題

來源:互聯網
上載者:User

標籤:java   使用   io   檔案   資料   問題   演算法   new   

我需要把星期天看的一些東西記錄下來,要不然會忘記。

hashCode、equals:

   1)每個java對象都有hashCode和equals方法。

java的終極類是object類,那麼object類是如何來標註自己呢,就是object這個類是如何來區分對方。就是使用它們的hashcode和equals來推斷。

    (hashcode是通過hash演算法實現的)

  2)JVM每new一個object,都會講Object丟到一個Hash(雜湊表)裡去,這樣下次比較或者擷取這個對象的時候就可以根據對象的hashcode去這個表來取,可以提高效率。

我們必須知道java是有記憶體限制的,所以理論上是不可以無限次new的。

    先比較hashcode,如果這個鏈表上還有其他資料就用equals。

我們可能會問,那直接使用equals不就得,當然,這是可以的。但是我們要看到hashcode的效率問題,hashcode主要的用途就是減少每次調用equals。

 3)關於重寫Hashcode和equals的問題:

   一般情況下,我們是不需要重寫這兩個函數的。想Integer Double這類的對象,java已經為我們重寫了這兩個函數,這也是為什麼只要兩個字串內容一樣他們的equals就是一樣的,按道理不應該,因為equals比較的是對象的引用。

    需要重寫的情況:就是當我們使用map裡面的hashmap這類東西的時候,如果我們用自訂類作為索引值就必須重寫,否則會找不到類。因為類是繼承object的,會使用object的hashcode

所以兩個值一樣的資料,在這裡面就會變成兩個數。

就是使用自訂的key,才需要重寫。

 

I/O:

   File類:可以是檔案,也可以是檔案目錄。通過File類我們可以擷取檔案的一定屬性。

   流:這個反正就是一系列資料,我也說不清。

java的輸入輸出:(1)字元輸出、輸入資料流(Writer、Reader)(2)位元組輸出、輸入資料流。 (InputStream、OutPutStream)

 (好像還有stdIO)

區別

     (1)讀寫單位不同

        位元組流以位元組(8bit)為單位,字元流以字元為單位,每次讀取的位元組就要看採用的字元對應表了。

   (2)處理對象不同

      位元組流可以處理所有類型對象(圖片,視頻,文本。。。)

      字元流只能是字元類型

 

注意:位元組流是無法直接轉換為字元輸出的,因為讀取的單位不同,可以將數組位元組轉換為string了在輸出。。

 

相關文章

聯繫我們

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