java总结(1)
JDK java軟件開發工具包
包括java運行環境,java開發工具,java基礎的類庫
bin 存放java各種可執行文件
jre java運行環境
lib jdk所需要的一些資源文件和資源包
helloworld背后的故事
1.編寫代碼
2.編譯
機器不認識我們寫的代碼,需要進行編譯成字節碼,編譯后的文件叫做class文件
3.類裝載ClassLoader
執行程序尋找和裝載所需要的類
4.字節碼校驗(byte-code)
對class文件的代碼進行校驗,保證代碼的安全性
5.解釋(Interpreter)或者JIT(just in time,java即時編譯)
可是機器也不能認識class文件,還需要被解釋器進行解釋,或者是通過即時編譯成為本地機器碼,機器才能最終理解我們所表達的東西
6.運行
最后由環境對代碼進行運行
開發期=====編譯期=======運行
虛擬機的功能
(1)通過classloader尋找和裝載class文件
(2)解釋字節碼成為指令并執行,提供class文件的運行環境
(3)進行運行期間垃圾回收
(4)提供與硬件交互的平臺
所有與平臺有關的東西都是由虛擬機去處理
java技術三大特性
(1)垃圾回收
(2)安全性
(3)虛擬機
for和while
for 如果用于控制循環的增量定義for語句中,那么該變量只在for語句內有效(節省內存)
for和while可以互換。如果需要定義循環增量,用for更為合適
break與continue
break語句 應用范圍為選擇結構和循環結構
continue語句:應用于循環結構,特點為結束本次循環,繼續下一次循環
break與continue單獨存在,下面有任何語句,都執行不到。
函數
修飾符 返回值類型 函數名(參數類型 形式參數){
執行語句;
return 返回值;
}
當函數的返回值類型為void時,函數中return語句省略不寫。
&和&&
&無論左邊是true是false,右邊都運算。
&&當左邊為false時,右邊不運算。
|和||
|兩邊都參與運算。
||當左邊為true,右邊不運算。
位運算符
<<其實就是乘以2的移動的位數次冪(向左移)
>>就是除以2的移動的位數次冪
最高位補什么有原來的數據最高值而定
如果最高位0,右移后,用0補空位
如果最高位1,右移后,用1補空位
面向對象
什么是類
類是用來描述對象的。由于對象是虛擬出來的東西,是看不見摸不著的,我們需要在程序中使用對象,就需要用一種方式來描述對象,然后根據這個描述來創建對象。
類和對象的關系
對象是類的實例,類是對象的抽象。
怎么定義類
將一系列特征相似的對象的共同特征及行為抽取出來進行描述,寫在一個class中,用成員變量描述對象的特征,用成員方法來描述對象的行為。
怎么使用類創建對象
使用new關鍵字和指定類名來創建一個對象。
對象的產生
Person p = new Person();
先在堆內存中創建了一個對象,然后棧內存中創建一個變量引用了對象的地址。
static關鍵字
static關鍵字用來修飾類的成員,被這個關鍵字修飾的成員都和類加載有關。
JVM運行時不會將所有類加載到內存,因為無法確定程序中要使用哪些。類在第一次使用時加載,只加載一次。
靜態變量
用static修飾的變量就是靜態變量。
靜態變量在類加載后就初始化。
靜態變量被類的所有實例所共享。
靜態變量可以使用 類名.變量名 形式訪問。
如果在定義一個類的時候,發現一個成員變量需要被所有實例所共享,那么這個成員變量就需要定義為 static 的。
靜態方法
用 static 修飾的方法就是靜態方法。
靜態方法在類加載后就可以使用。
靜態方法可以使用 類名 . 方法名 形式訪問。
靜態方法不能直接訪問外部非靜態成員。
因為外部非靜態成員必須在類創建對象之后才能使用,而靜態方法可以在沒創建對象時就使用。
如果要在靜態方法內部訪問外部非靜態成員,需要先創建該類對象,通過對象訪問。
靜態方法中不能使用 this關鍵字。
因為 this 是個引用,哪個對象調用方法就引用哪個對象。 而靜態方法有可能不是被對象調用的, this 無從引用。
如果一個方法不用訪問對象的非靜態成員,那么就可以定義為靜態的,這樣使用者就不需要創建對象,直接用類名調用。
靜態方法通常是作為工具方法或者一個可以產生對象的方法被聲明,目的是為了讓調用者更方便的使用,不必創建對象。
靜態代碼快
用 static 修飾的代碼塊就是靜態代碼塊。
靜態代碼塊在類加載后執行。
靜態代碼塊和靜態方法相同,不能使用外部非靜態成員。
靜態代碼塊執行和靜態變量的初始化順序由代碼從上到下順序決定
靜態內部類
用 static 修飾的內部類就是靜態內部類。
靜態內部類在類加載后就可以創建對象,無需創建外部類對象
向上轉型
把一個子類當做父類來用是可以的,因為父類有的子類都有
把一個父類當做子類來用就不可以了,因為子類有的父類不一定有
可以定義一個父類類型的變量來記住子類對象,這在程序中稱之為向上轉型
轉載于:https://www.cnblogs.com/shhaoran/archive/2013/02/23/2924337.html
總結
- 上一篇: 关于报表中汇率转换的问题
- 下一篇: 十五、表单