文章出處
文章列表
看下面例子及說明:
/** 假如有外部類調用了該類,代碼為:new StaticTest(); 那么下面是類屬性的加載順序 */ public class StaticTest{ public int dsd=2;//第3 //多個對象會有多次分配內存 public awds() { int sdsfsd=2;//第4 //多個對象會有多次分配內存 } //靜態代碼塊 static{ System.out.println("靜態代碼塊正在加載...");//第1 } public static int d=2;//第2 內存只被分配一次 public final static int u = 3; //內存只被分配一次 且不可修改值 public void test() {//不會被加載 int sdsfsd=2;//不會被加載 new String ("kjj");//不會被加載 多次調用會有多次分配內存 } String s1 = "a";//內存只被分配一次 String s2 = "b"; //內存只被分配一次 String s3 = "ab"; //內存只被分配一次 String s4 = s1 + s2; // 多次調用會有多次分配內存 String s5 = "a" + "b"; //內存只被分配一次 String s6 = s1 + "b"; // 多次調用會有多次分配內存 StringBuffer s7 = new StringBuffer("abc"); // 多次調用會有多次分配內存 String s8 = s7.substring(3); StringBuffer s9 = new StringBuffer("abc"); System.out.println((s3 == s4));//false System.out.println(s3 == s5);//true System.out.println(s3 == s6);//false System.out.println(s4 == s6);//false System.out.println((s4 == s8));//false System.out.println((s7.toString() == s9.toString()));//false System.out.println((s1 + s2)==(s1 + s2));//false System.out.println((s1 + "b")==(s1 + "b"));//false }
文章列表
全站熱搜