練習:
package com.heima.collection;
public class example ;
public static void main(string args)
public void change(string str, char ch)
}
記憶體執行過程:
過程解析:
①從main方法中開始,生成example物件,在棧記憶體中建立物件應用,在堆記憶體中建立例項物件,物件中有兩個引用:乙個是字串引用指向常量池中的「good」,乙個是陣列引用指向堆記憶體中的一維陣列。
②呼叫change方法,則str指向常量池「good」,ch指向成員變數ch指向的一維陣列。
③str指向常量池中的字串常量「test ok」,ch指向的陣列第一位發生改變。
string類方法的介紹
關於string的經典練習題
package com.itheima;
import org.junit.test;
public class stringtest
/*** 練習一:模擬trim()
*/// 方法一
public string trim1(string str)
while ((" ".equals(string.valueof(chararray[end]))) && end > 0)
return str.substring(start, end + 1);
} return null;
} // 方法二
public string trim2(string str)
while (end > start && str.charat(end) == ' ')
return str.substring(start, end + 1);
} return null;
} /**
* 練習二:將乙個字串進行反轉,將字串的指定部分進行反轉
*/public string reverse(string str, int beginindex, int endindex)
/*** 練習三:統計字串在字串中的出現次數 例:"ab"在"abcdedg"
*/public int count()
/*** 練習四:獲取兩字串的最大相同字串
*//**
* 練習五:將字串中的字元進行自然排序
*//**
* 練習六:定義自己的string類*/}
注:
stringbuffer是可變序列,並且效率高於string,通常期方法可能改變自身,並不像string的操作函式返回的是乙個新的字串
stringbuilder是可變序列,效率高於stringbuffer但是執行緒不安全。
記憶體溢位真實案例分析
某業務系統中,同一天產生多次excel匯出請求,excel資料需要通過查表獲取,由於資料量過大,導致了outofmemoryerror 事先在服務啟動指令碼中已設定oom異常觸發堆快照引數及gc詳情列印引數 xx printgctimestamps xx printheapatgc xx heapd...
QThread多執行緒程式設計經典案例分析
傳統的圖形介面應用程式都只有乙個執行緒執行,並且一次執行乙個操作。如果使用者呼叫乙個比較耗時的操作,就會凍結介面響應。乙個解決方法是按照事件處理的思路 另外乙個解決方法是 採用多執行緒。qt qthread多執行緒程式設計的方法一直有個爭議,就是bradley t.hughes you re doi...
QThread多執行緒程式設計經典案例分析
傳統的圖形介面應用程式都只有乙個執行緒執行,並且一次執行乙個操作。如果使用者呼叫乙個比較耗時的操作,就會凍結介面響應。乙個解決方法是按照事件處理的思路 另外乙個解決方法是 採用多執行緒。qt qthread多執行緒程式設計的方法一直有個爭議,就是bradley t.hughes you re doi...