天天看點

1.你知道Java語言的特性嗎?

從這節起寫下我看java核心技術卷的所思所想,純粹是倒閉自己輸出,如果覺得有什麼錯誤,歡迎大家幫我指正哦。

說實話讀了第一章的内容,并沒有吸收到什麼,有點像在看曆史書,但大緻還是把Java語言的特點講一下。

1.簡單性

相比于C語言來說,文法方面更加簡單,沒有煩人的指針,不需要管理記憶體,垃圾回收方面更是自動的,初學者隻要完成基本的程式編寫即可。

2.面向對象

我們知道,一般語言分為面向過程和面向對象,那麼兩者差別是什麼呢?

前者是以問題和行為為導向,做一件事,可能分為多個步驟,那一個方法就對應一個步驟,比如買菜需要幾步?

1.出門騎車去菜場

2.選菜

3.付款

4.找錢

5.拿菜

6.走路回家

這裡當然是打個比方,而面向對象呢?就需要一個這樣承載這個幾個方法的實體,我們暫且把他叫成小明。

那麼小明去買菜同樣需要這幾步操作,但這幾個方法可以寫在對象的内部,買菜通過小明這個實體去調用,但這個實體不是憑空産生的,是以就需要執行個體化,面向對象的開銷就會比面向過程開銷大一些。

那這麼說來,好像面向過程更好啊?

但我們可以想象這樣的場景,小明和小強都要去買菜,但一個是開車去,一個是劃船去,而我們之前已經把方法寫死了,是要騎車去菜場,那隻能再往後加if else了,但如果是面向對象程式設計,我們就可以把對應的行為做個抽象,小明和小強同屬于人,那就定義一個大對象Person,這兩人出門,回家,都會有不同的行為,隻需要繼承下這個Person,方法中相同的行為就能有不同實作了,是以程式的維護性和擴充性大大增強了。

ps:繼承是就是你作為人,都能跑能跳,有兩隻手,這就是人這個物種帶給你的,你繼承了這些特點。

總結就是,面向過程開銷小,而面向過程維護性,擴充性好,是以硬要比較哪個好,沒什麼特别的意義,還得看應用場景,比如嵌入式領域,一般都使用面向過程的語言,因為記憶體不夠嘛,而其他領域,記憶體充足,我們就更多考慮後期怎麼維護了。

3.分布式

說實話不知道是翻譯的鍋還怎麼樣,我愣是沒怎麼看懂,原文講的跟分布式有什麼關系。

Java 有一個豐富的例程庫,用于處理像 HTTP 和 FIT 之類的 TCP/IP 協定。Java 應用

程式能夠通過 URL 打開和通路網絡上的對象,其便捷程度就好像通路本地檔案一樣。

如今,這一點已經得到認可,不過在 1995 年, 主要還是從 C++ 或 Visual Basic 程式連接配接

Web 伺服器。

個人認為現在大型網站的應用都采用分布式的架構,何為分布式?就是将一個應用分布在多個伺服器上,或者說一個功能一個伺服器,分布式的核心主要是為了解決大流量的通路,如果網站沒幾個人通路,那就沒什麼必要搞成分布式的了。

4.健壯性與安全性

展現主要有三點,類型檢查,異常處理,垃圾回收。

因為Java是強類型的語言,一旦你定義了某個類型,如果不比對,編譯或運作的時候就能檢查出來,抛一些異常讓你處理,而不是把程式搞壞了。而在程式運作的過程中,會建立許多對象,但他們有些隻是用了一次就不再使用了,後期就會被回收,防止你的記憶體爆掉。

5.可移植性

這取決于強大的java虛拟機,一次編譯,到處運作。不管在什麼環境下,隻需要同一套代碼,就能以相同方式運作,學過c的都知道,c語言在linux和Windows平台下得使用兩套代碼運作。

6.解釋型

其實Java是半編譯半解釋型的語言,而不是純粹的解釋型語言,這依賴于它的即時編譯器,可以将執行最頻繁的位元組碼序列翻譯成機器碼存儲在本地,下次就不需要再編譯了。

7.多線程

一般的語言其實都會引入多線程技術,用文中的話來說,你也不想中途網絡卡了,界面就被凍住了吧。

8.動态性