學校項目過程中知識點 Java 2015/9/15 晚,java2015
##命令行運行Java程序1.文件
Java的源代碼存放在擴展名為“.java”的文件中;
Java源文件編譯後,得到“.class”的文件
2.方法
命令行下編譯java源代碼的方法:javac 文件名.java
命令行下執行.class文件:java 文件名(如果文件有main方法,直接執行)
##類的生命周期
在一個類編譯完成之後,下一步就需要開始使用類,如果要使用一個類,肯定離不開JVM。在程序執行中JVM通過裝載,鏈接,初始化這3個步驟完成。
類的裝載是通過類加載器完成的,加載器將.class文件的二進制文件裝入JVM的方法區,並且在堆區創建描述這個類的java.lang.Class對象。用來封裝數據。 但是同一個類只會被類裝載器裝載一次。
鏈接就是把二進制數據組裝為可以運行的狀態。
鏈接分為校驗,准備,解析這3個階段
校驗一般用來確認此二進制文件是否適合當前的JVM(版本),
准備就是為靜態成員分配內存空間,。並設置默認值
解析指的是轉換常量池中的代碼作為直接引用的過程,直到所有的符號引用都可以被運行程序使用(建立完整的對應關系)
完成之後,類型也就完成了初始化,初始化之後類的對象就可以正常使用了,直到一個對象不再使用之後,將被垃圾回收。釋放空間。
當沒有任何引用指向Class對象時就會被卸載,結束類的生命周期
##Java中創建對象的方法
http://blog.csdn.net/mhmyqn/article/details/7943411
有4種顯式地創建對象的方式:
1.用new語句創建對象,這是最常用的創建對象的方式。
2.運用反射手段,調用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。
3.調用對象的clone()方法。
4.運用反序列化手段,調用java.io.ObjectInputStream對象的readObject()方法.
##Java反射機制
http://blog.csdn.net/liujiahan629629/article/details/18013523(簡單易懂 一看就懂)
http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。
Class
Class是Reflection故事起源。眾所周知Java有個Object 類,是所有Java 類的繼承根源,其內聲明了數個應該在所有Java 類中被改寫的方法:hashCode()、equals()、clone()、toString()、getClass()等。其中getClass()返回一個Class 對象。
Class 類十分特殊。它和一般類一樣繼承自Object,其實體用以表達Java程序運行時的classes和interfaces,也用來表達enum、array、primitive Java types(boolean, byte, char, short, int, long, float, double)以及關鍵詞void。當一個class被加載,或當加載器(class loader)的defineClass()被JVM調用,JVM 便自動產生一個Class 對象。