01 java 编程基础
2019獨角獸企業重金招聘Python工程師標準>>>
JAVA語言特點
v????? 簡約且簡單
v????? 平臺無關性
v????? ?面向對象
v????? ?多線程
v????? ?分布性
v????? ?高性能(相對于其他解釋型語言)
v????? ?健壯性
Java虛擬機相關概念
v????? 什么是JVM
?????? JVM是Java虛擬機(Java Virtual Machine)的縮寫,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能模擬來實現的。Java虛擬機有自己完善的硬件架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。
v????? 為什么使用JVM?
?????? Java語言最重要的特點就是可以在任何操作系統中運行。使用Java虛擬機就是為了支持與操作系統無關,在任何系統中都可以運行。
v????? JVM的基本原理
?????? Java虛擬機屏蔽了與具體操作系統平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,實際上最終還是把字節碼解釋成具體平臺上的機器指令執行。
?
環境變量說明
v????? Path
§????????Windows操作系統用來尋找可執行文件的路徑。
v????? Classpath
§????????Java虛擬機(JVM)借助類裝載器裝入應用程序使用的類,具體裝入哪些類根據當時的需要決定。
§????????CLASSPATH環境變量告訴類裝載器到哪里去尋找三方提供的類和用戶定義的類。另外,你也可以使用JVM命令行參數 –classpath分別為應用程序指定類路徑,在 –classpath 中指定的類路徑覆蓋CLASSPATH環境變量中指定的值。
?????? javac–classpath 路徑 java文件
?????? java–classpath 路徑 java類
?
v????? 注:
§????????javac 命令后跟的是源程序文件全名(包括擴展名.java);
§????????java 命令后跟的是主類名(不包括擴展名.class);
?
?
源程序文件命名原則
v????? 一個源程序文件中可以包含多個類,但只能有一個類用public修飾;也可以所有的類都不用public修飾.
?
v????? 如果源程序文件有public修飾的類,則源程序文件名必須和public修飾的類名相同;否則源程序名可以是任何合法的標識符.
?
Java開發常用命令
v????? Java開發工具包括:
§????????javac:Java編譯器,用來將java程序編譯成bytecode。
§????????java:Java解釋器,執行已經轉換成bytecode的java應用程序。
§????????javadoc:文檔生成器,創建HTML文件.
§????????javap:反編譯,將類文件還原回方法和變量
要點補充:
環境變量的設置的注意點:
??? A:建環境變量必須是系統變量。
??? B:%%:表示在一個環境變量中調用另一個環境變量。
?????? %Java_Home%\bin
Path:用于搜索可執行文件。
classpath:用于搜索類文件。
字符集:
?????? char是字符類型,JAVA語言對字符采用unicode字符編碼,
?????? 由于計算機只能儲存二進制數據,必須對字符進行編碼
?????? 字符編碼:用一串二進制數據來表示特定的字符。
?????? ASCII碼:表達現代英語和其他西歐語言,1個字節,7位,128個字符。
?????? ISO-8859-1(Latin-1):國際化標準組織為西歐語言中的字符制定的編碼,1個字節8位,與ASCII兼容
?????? gb2312(GBK21866):對簡體中文字符的編碼,收錄7445,21866,與ASCII兼容。
?????? Unicode字符集:收錄全世界所有語言中的字符,跨平臺字符。
?
?????? UTF-8(傳輸速度比UTF-16在網絡比較快。):有的系統不支持Unicode。
?????? UTF-16
?????? 在Unicode字符集中,一個字符占2個字節(16位)。
?????? 一個字節占8個bit位,最多可以占到4個字節。
?
在JAVA中,有六個不同的地方可以存儲數據:
?
1. 寄存器(register)。這是最快的存儲區,因為它位于不同于其他存儲區的地方——處理器內部。但是寄存器的數量極其有限,所以寄存器由編譯器根據需求進行分配。你不能直接控制,也不能在程序中感覺到寄存器存在的任何跡象。
?
2. 堆棧(stack)。位于通用RAM中,但通過它的“堆棧指針”可以從處理器哪里獲得支持。堆棧指針若向下移動,則分配新的內存;若向上移動,則釋放那些內存。這是一種快速有效的分配存儲方法,僅次于寄存器。創建程序時候,JAVA編譯器必須知道存儲在堆棧內所有數據的確切大小和生命周期,因為它必須生成相應的代碼,以便上下移動堆棧指針。這一約束限制了程序的靈活性,所以雖然某些JAVA數據存儲在堆棧中——特別是對象引用,但是JAVA對象不存儲其中。
?
3. 堆(heap)。一種通用性的內存池(也存在于RAM中),用于存放所以的JAVA對象。堆不同于堆棧的好處是:編譯器不需要知道要從堆里分配多少存儲區域,也不必知道存儲的數據在堆里存活多長時間。因此,在堆里分配存儲有很大的靈活性。當你需要創建一個對象的時候,只需要new寫一行簡單的代碼,當執行這行代碼時,會自動在堆里進行存儲分配。當然,為這種靈活性必須要付出相應的代碼。用堆進行存儲分配比用堆棧進行存儲存儲需要更多的時間。
?
4. 靜態存儲(static storage)。這里的“靜態”是指“在固定的位置”。靜態存儲里存放程序運行時一直存在的數據。你可用關鍵字static來標識一個對象的特定元素是靜態的,但JAVA對象本身從來不會存放在靜態存儲空間里。
?
5. 常量存儲(constant storage)。常量值通常直接存放在程序代碼內部,這樣做是安全的,因為它們永遠不會被改變。有時,在嵌入式系統中,常量本身會和其他部分分割離開,所以在這種情況下,可以選擇將其放在ROM中
?
6. 非RAM存儲。如果數據完全存活于程序之外,那么它可以不受程序的任何控制,在程序沒有運行時也可以存在。
?
1、靜態存儲區:內存在程序編譯時就分配好了,比如靜態變量;
2、棧區:各種原始數據類型的局部變量都是在棧上創建的,當程序退出該變量的作用范圍的時候,這個變量的內存會被自動釋放。
3、堆區:對象(包括數組)都是在堆中創建的。程序在運行的時候用new關鍵字來創建對象,對象創建時會在堆中為其分配內存。轉載于:https://my.oschina.net/u/2552902/blog/543940
總結
以上是生活随笔為你收集整理的01 java 编程基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20120918-双向链表类定义《数据结
- 下一篇: transform 遇上 positio