文章出處

看下面例子及說明:

 

/**
假如有外部類調用了該類,代碼為: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

}

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()