全面認識JAVA
全面認識JAVA[@more@] 作SCJP培訓已經有一段時間了,到我這學習的有在校的大學生,也有在職的開發人員。通常這些學員此前都對Java已有一些瞭解,但普遍對Java缺乏總體的認識。於是學員總是問,Java應該怎麼學?Java能做什麼?什麼是Applet?什麼是Servlet、Jsp、EJB?還有Webspere、Weblogic又是做什麼的等等。之所以學員會有這些疑問,是因為大家普遍對Java相關概念聽說的太多而瞭解的又相對少的緣故。
學通Java語言需要一個過程,所有Java相關的概念都會在學習的過程中逐漸變得清昕。這個過程的開始就是要先學會標準的Java技術(J2SE),然後是學Java的簡單Web運用,然後分散式運用,再以後對Java的移動技術運用就很容易理解了。
以下是Java標準技術的一些要點:
一、Java的跨平臺性,即一次編譯到處執行
簡單地說Java的跨平臺性就是指,編譯後的Java程式可直接在不同的平臺上執行而不用重新編譯,這一特性使得Java隨著Web應用的普及而迅速普及起來。而Java的跨平臺性是如何實現的呢?這就要理解Java虛擬機器和位元組碼的概念。
實際上,編譯後的Java程式碼並不是傳統的二進位制程式碼(如Windows下的.exe檔案),而是Java位元組碼,這種位元組碼檔案是不能直接在作業系統上執行的。要想在一個作業系統上執行一個Java程式必須有一箇中間環節來負責將Java位元組碼解釋成二進位制碼,這個中間環節就是Java虛擬機器(簡稱JVM)。由於目前大多數作業系統已經實現了JVM,所以Java輕鬆實現跨平臺性。
二、面象物件技術
Java全面支援面象物件技術,這體現在Class(類)是Java程式構成的基本單元,一個Java程式通常由許多Class組成,而且這些Class還會有一定的繼承關係,Java支援Class的單繼承,從而使類之間的繼承關係更明確。繼承的結果產生類的多型性,類的多型本質上講就是可以用父類的引用訪問繼承類的實現(子類物件),類的這種多型性最終形成了元件物件模型的基礎,即透過介面(父類)訪問實現(子類)。
三、Java中的I/O操作
Java中以位元組流(InputStream和OutputStream)、節符流(Reader和Writer)來分別讀寫二進位制資料和字元資料,使用非常簡單有效。Java類庫中的File類不僅提供檔案操作而且還包含資料夾操作,如下面這幾行程式碼可以列出C盤根目錄下的所有檔案:
File f=new File("c://");
String [] m_dir= f.list();
for(int i=0;i System.out.println(m_dir[i]);
四、Java中的圖形及事件處理
可以用awt包或swing包的Java類來進行大部分的Java圖形介面設計,下面的幾行程式碼將產生一個200*200畫素的窗體:
Frame f=new Frame("Welcome");
f.setSize(200,200);
f.setVisible(true);
預設情況下,Frame窗體的關閉按鈕不起作用,這也是Java初學者迷惑的地方。為了使使用者按下關閉按鈕時能關閉Frame窗體,需要讓這個窗體響應一個WindowEvent事件,具體的做法就是給這個窗體新增一個事件監聽器物件,這個事件監聽器就是WindowListener介面的實現。在上面的程式碼中插入如下程式碼就可以關閉窗體:
f.addWindowListener(new WindowAdapter(){
?public void windowClosing(WindowEvent e){
??System.exit(0);
?}
}
這裡用到一個無名內部類,無名內部類是Java中內部類的一種靈活運用方式。
五、Java中執行緒及同步控制
執行緒概念的引入是為了實現並行處理,從而提高程式的效率。Java中的執行緒實現非常簡單,可以用兩種方式來建立執行緒,一種是實現Runnable介面,另一種是繼承Thread類重寫run()方法。兩種方式唯一的不同就是前者保留了繼承一個類的可能(因為Java只支援類的單繼承,但介面沒有此限制)。
永遠都用start()方法來啟動一個執行緒,執行緒類中的run()可以被直接呼叫,但決不是啟動一個執行緒,二者有著本質的區別。
用同步控制關鍵字synchronized來保護執行緒敏感資料,synchronized塊中的內容可以保證同一時刻只能被一個執行緒訪問,所以其中的資料是執行緒安全的。
用Object類中的wait()和notify()方法可以實現執行緒間互動,但要記住wait()和notify()方法只有發生在同一個物件上才能真正實現執行緒間互動。被某一物件wait()方法阻塞的執行緒需要另外一個呼叫了同一物件notify()的執行緒干預才能恢復執行。notify()方法一次喚醒一個被wait()方法阻塞的執行緒,notifyAll()方法可以一次喚醒所有被wait()方法阻塞的執行緒。
學通Java語言需要一個過程,所有Java相關的概念都會在學習的過程中逐漸變得清昕。這個過程的開始就是要先學會標準的Java技術(J2SE),然後是學Java的簡單Web運用,然後分散式運用,再以後對Java的移動技術運用就很容易理解了。
以下是Java標準技術的一些要點:
一、Java的跨平臺性,即一次編譯到處執行
簡單地說Java的跨平臺性就是指,編譯後的Java程式可直接在不同的平臺上執行而不用重新編譯,這一特性使得Java隨著Web應用的普及而迅速普及起來。而Java的跨平臺性是如何實現的呢?這就要理解Java虛擬機器和位元組碼的概念。
實際上,編譯後的Java程式碼並不是傳統的二進位制程式碼(如Windows下的.exe檔案),而是Java位元組碼,這種位元組碼檔案是不能直接在作業系統上執行的。要想在一個作業系統上執行一個Java程式必須有一箇中間環節來負責將Java位元組碼解釋成二進位制碼,這個中間環節就是Java虛擬機器(簡稱JVM)。由於目前大多數作業系統已經實現了JVM,所以Java輕鬆實現跨平臺性。
二、面象物件技術
Java全面支援面象物件技術,這體現在Class(類)是Java程式構成的基本單元,一個Java程式通常由許多Class組成,而且這些Class還會有一定的繼承關係,Java支援Class的單繼承,從而使類之間的繼承關係更明確。繼承的結果產生類的多型性,類的多型本質上講就是可以用父類的引用訪問繼承類的實現(子類物件),類的這種多型性最終形成了元件物件模型的基礎,即透過介面(父類)訪問實現(子類)。
三、Java中的I/O操作
Java中以位元組流(InputStream和OutputStream)、節符流(Reader和Writer)來分別讀寫二進位制資料和字元資料,使用非常簡單有效。Java類庫中的File類不僅提供檔案操作而且還包含資料夾操作,如下面這幾行程式碼可以列出C盤根目錄下的所有檔案:
File f=new File("c://");
String [] m_dir= f.list();
for(int i=0;i
四、Java中的圖形及事件處理
可以用awt包或swing包的Java類來進行大部分的Java圖形介面設計,下面的幾行程式碼將產生一個200*200畫素的窗體:
Frame f=new Frame("Welcome");
f.setSize(200,200);
f.setVisible(true);
預設情況下,Frame窗體的關閉按鈕不起作用,這也是Java初學者迷惑的地方。為了使使用者按下關閉按鈕時能關閉Frame窗體,需要讓這個窗體響應一個WindowEvent事件,具體的做法就是給這個窗體新增一個事件監聽器物件,這個事件監聽器就是WindowListener介面的實現。在上面的程式碼中插入如下程式碼就可以關閉窗體:
f.addWindowListener(new WindowAdapter(){
?public void windowClosing(WindowEvent e){
??System.exit(0);
?}
}
這裡用到一個無名內部類,無名內部類是Java中內部類的一種靈活運用方式。
五、Java中執行緒及同步控制
執行緒概念的引入是為了實現並行處理,從而提高程式的效率。Java中的執行緒實現非常簡單,可以用兩種方式來建立執行緒,一種是實現Runnable介面,另一種是繼承Thread類重寫run()方法。兩種方式唯一的不同就是前者保留了繼承一個類的可能(因為Java只支援類的單繼承,但介面沒有此限制)。
永遠都用start()方法來啟動一個執行緒,執行緒類中的run()可以被直接呼叫,但決不是啟動一個執行緒,二者有著本質的區別。
用同步控制關鍵字synchronized來保護執行緒敏感資料,synchronized塊中的內容可以保證同一時刻只能被一個執行緒訪問,所以其中的資料是執行緒安全的。
用Object類中的wait()和notify()方法可以實現執行緒間互動,但要記住wait()和notify()方法只有發生在同一個物件上才能真正實現執行緒間互動。被某一物件wait()方法阻塞的執行緒需要另外一個呼叫了同一物件notify()的執行緒干預才能恢復執行。notify()方法一次喚醒一個被wait()方法阻塞的執行緒,notifyAll()方法可以一次喚醒所有被wait()方法阻塞的執行緒。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10901326/viewspace-965619/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何全面認識物聯網路卡
- 全面認識資料指標體系指標
- 認識Java泛型Java泛型
- 帶你全面認識CMMI V2.0(二)
- 再次認識java泛型Java泛型
- 全面認識VPN(三),網際網路營銷
- 全面認識VPN(一),網際網路營銷
- 帶你全面認識CMMI V2.0(六)——改進
- 快速冪的初步認識(Java)Java
- webpack4.X 實戰(一):全面認識webpack、核心概念Web
- 帶你全面認識CMMI V2.0(終)——實施落地
- 帶你全面認識CMMI V2.0(四)——管理 賦能
- 教你認識Java 可變引數Java
- Java運算子認識 (第四節)Java
- 重新認識Java微服務架構-認證服務Java微服務架構
- Java小白進階筆記(1)-重新認識JavaJava筆記
- 快速認識,後端王者語言:Java後端Java
- Java基礎系列-SPI你認識嗎Java
- Java 混淆那些事(一):重新認識 ProGuardJava
- Java 混淆那些事(二):認識 ProGuard GUIJavaGUI
- 認識Java中String與StringBuffer以及StringBuilderJavaUI
- ASP.NET Core技術研究-全面認識Web伺服器KestrelASP.NETWeb伺服器
- java基礎之執行緒 認識volatileJava執行緒
- 一,認識計算機和Java基礎計算機Java
- 認識Java專案開發效率工具 LombokJavaLombok
- java基礎之執行緒 認識原子類Java執行緒
- Java併發專題(一)認識執行緒Java執行緒
- 《java學習二》jvm效能優化-----認識jvmJavaJVM優化
- Kubernetes Pod 全面知識
- 認識CopyOnWriteArrayList
- 認識ncurses
- 認識jqueryjQuery
- 認識DockerDocker
- JQuery認識jQuery
- 認識htmlHTML
- 認識RedisRedis
- 認識 LLVMLVM
- JSON認識JSON
- 基於Drone+Gogs流水線-全面認識輕量級雲原生CI引擎DroneGo