Java概念
Java是一種可以撰寫跨平台應用程序的、面向對象的程序設計語言。簡單說,Java就是一種語言,不過是一種針對jvm的語言,Java編譯后是字節碼,而jvm會把這些字節碼解釋成機器碼,然后做出相應的動作。
java主要分三塊,j2se:java的基礎核心語言。j2me:java的微型模塊,專門針對內存小,沒有持續電源等小型設備。j2ee:java的企業模塊,專門針對企業數據庫服務器的連接維護。 手機用到的是用j2me所編出來的小程序。
Java虛擬機
Java虛擬機(JVM)是Java Virtual Machine的縮寫,是指建立在硬件和操作系統之上,運用硬件或軟件手段實現的虛擬的計算機。Java虛擬機有自己完善的硬件架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。可以運行Java字節碼的虛擬計算機系統 ,它有一個解釋器組件,可以實現Java字節碼和計算機操作系統之間的通信。
Java的垃圾回收機制
gc即垃圾收集機制是指jvm用於釋放那些不再使用的對象所占用的內存。在C/C++中,程序員需要自己管理內存,Java提供了一個系統級的線程來跟蹤內存分配,不再使用的內存區將會自動回收不同的JVM的實現中,垃圾收集機制大不相同若需要使一個對象被回收,必須移除其上的所有引用,通常可將其置NULL但是,即使有了垃圾收集機制,仍然可能出現內存溢出的情況。
Java的運行環境搭建
JAVA_HOME
C:\Java\jdk1.7.0_55
PATH
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
javac:Java編譯器
java:Java解釋器
jdb:Java調試器
javap:反編譯
javadoc:文檔生成器
利用編輯器編寫Java源程序,源文件名:主類名.java
利用編譯器將源程序編譯成字節碼,字節碼文件名:源文件名.class
利用虛擬機(解釋器)運行,工作過程:載入、代碼校驗、解釋執行
必須熟練掌握的命令
javac命令:編譯器將java源文件編譯成字節碼文件
java命令:JVM解釋執行已經編譯好的字節碼文件
java的優點
1.平台無關性
平台無關性是指Java能運行於不同的平台。Java引進虛擬機 原理,並運行於虛擬機,實現不同平台的Java接口之間。使用Java編寫的程序能在世界范圍內共享。虛擬機是個用來解釋Java指令的軟件包,可以讓Java在任何機器上運行,比如有運行在Mac或 UNIX下的虛擬機軟件包。虛擬機並不是Java語言本身,它是個為特定機器編寫的解釋器軟件。Java的虛擬機策略就相當於世界語,這是個人造的國際語言,目的是使得不同語言之間的翻譯和溝通更加容易。
Java源代碼和字節碼與機器無關,JVM與機器相關,裝在不同操作系統的機器上,需要專門為該操作系統開發的JVM,Java的數據類型與機器無關,Java虛擬機(Java Virtual Machine)是建立在硬件和操作系統之上,實現Java二進制代碼的解釋執行功能,提供於不同平台的接口的。Java適宜於互聯網的開發應用,其中一個原因是它使用了虛擬機。
2.安全性
Java的編程類似C++,學習過C++的讀者將很快掌握Java的精髓。Java舍棄了C++的指針對存儲器地址的直接操作,程序運行時,內存由操作系統分配,這樣可以避免病毒通過指針侵入系統。Java對程序提供了安全管理器,防止程序的非法訪問。
3.面向對象
Java吸取了C++面向對象的概念,將數據封裝於類中,利用類的優點,實現了程序的簡潔性和便於維護性。類的封裝性、繼承性等有關對象的特性,使程序代碼只需一次編譯,然后通過上述特性反復利用。程序員只需把主要精力用在類和接口的設計和應用上。Java提供了眾多的一般對象的類,通過繼承即可使用父類的方法。在Java中,類的繼承關系是單一的非多重的,一個子類只有一個父類,子類的父類又有一個父類。Java提供的Object類及其子類的繼承關系如同一棵倒立的樹形,根類為Object類,Object類功能強大,經常會使用到它及其它派生的子類。
4.分布式
Java建立在擴展TCP/IP網絡平台上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。這使得程序員使用網絡上的文件和使用本機文件一樣容易。
5.健壯性
Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自己操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能,這些功能特征大大提高了開發Java應用程序的周期。並且Java還提供了Null指針檢測、數組邊界檢測、異常出口、Byte code校驗等功能。
6.解釋型
我們知道C,C++等語言,都是針對CPU芯片進行編譯,生成機器代碼,該代碼的運行就和特定的CPU有關。Java不像C或C++,它不針對CPU芯片進行編譯,而是把程序編譯成稱為自字節碼的一種“中間代碼”。字節碼是很接近機器碼的文件,可以在提供了java虛擬機(JVM)的任何系統上被解釋執行。
7.動態
java程序的基本組成單元就是類,有些類是自己編寫的,有些是從類庫中引入的,而類又是運行時動態裝載的,這就使得Java可以在分部環境中動態的維護程序及分類,而不像C++那樣,沒檔期類庫升級以后,如果想讓程序具有新類庫提供的功能,就需要修改程序,重新編譯。
java的用途
1.網絡應用程序開發,例如:網上銀行(中國銀行,建設銀行,工商銀行的網上銀行都是用J2EE開發出來的,你看看他網銀的網頁的后綴名JSP就知道),網頁游戲等。2.企業管理軟件,現在很流行的B/S(瀏覽器/服務器)架構管理程序很多就是用J2EE開發的。3.手機游戲,你看到那些手機游戲安裝文件的后綴名.jar了嗎?就是這JAVA開發出來的標志。開發這些東西一般用JAVA ME(J2ME)4.嵌入式開發,例如給電視機頂盒,小型家電寫程序。java se(j2se)是一個基礎,如果你想靠JAVA吃飯那么J2EE和J2ME要選一個來學深入學習。如果想做網絡程序就學J2EE,想學手機編程,嵌入式類的就去學J2ME.不過一般J2EE的工作機會比較多。
程序的不安全性
最嚴重的:內存泄漏,程序崩潰
一般嚴重的:發生一些邏輯錯誤,且不便於調試
較輕的:丟失部分數據,就像強制轉換一樣
https://www.bilibili.com/video/BV1qL411u7eE?from=search&seid=16833944447396760504&spm_id_from=333.337.0.0