StringBuilder削除影響テスト
StringBuilderを使用したdeleteのサンプルです。
二つのStringBuilderにそれぞれデータを格納します。
最初のStringBuilderに別のStringBuilderで作ったデータを追加後
追加したデータを削除してnull参照にしてガーベッジコレクション扱いにします。
最初のStringBuilderのデータには削除したStringBuilderは影響がないか?
を確認したサンプルとなります。
テスト結果では影響はありませんでした。
package com.example.test.test40;
import android.util.Log;
public class clsTest2 {
//追加したStringBuilderのデータを消した場合
//追加先のStringBuilderのデータに影響するか?
public void test2()
{
//追加用のデータとしてStringにしたデータを追加する
Log.d("test2_1();","追加用のデータとしてString");
Log.d("test2_1()",test2_1());
//追加用のデータとしてStringBuilderオブジェクトを追加する
Log.d("test2_2();","追加用のデータとしてStringBuilder");
Log.d("test2_2()",test2_2());
/*
start: 影響テスト -----------------------------------
test2_1();: 追加用のデータとしてString
test2_1(): 0123456789
test2_2();: 追加用のデータとしてStringBuilder
test2_2(): 0123456789
end: 影響テスト -----------------------------------
*/
}
private String test2_1()
{
//変数宣言
StringBuilder txt1=new StringBuilder();
StringBuilder txt2=new StringBuilder();
//最初のデータ追加
for(int i=0;i<5;i++)
{
txt1.append(String.valueOf(i));
}
//追加用のデータ追加
for(int i=5;i<10;i++)
{
txt2.append(String.valueOf(i));
}
//追加用のデータとしてStringにしたデータを追加する
txt1.append(txt2.toString());
//追加したデータを削除する
txt2.delete(0,txt2.length());
//追加したデータを解放する
txt2=null;
//結果を戻す
return txt1.toString();
}
private String test2_2()
{
//変数宣言
StringBuilder txt1=new StringBuilder();
StringBuilder txt2=new StringBuilder();
//最初のデータ追加
for(int i=0;i<5;i++)
{
txt1.append(String.valueOf(i));
}
//追加用のデータ追加
for(int i=5;i<10;i++)
{
txt2.append(String.valueOf(i));
}
//追加用のデータとしてStringBuilderオブジェクトを追加する
txt1.append(txt2);
//追加したデータを削除する
txt2.delete(0,txt2.length());
//追加したデータを解放する
txt2=null;
//結果を戻す
return txt1.toString();
}
}
|
結果
start: 影響テスト -----------------------------------
test2_1();: 追加用のデータとしてString
test2_1(): 0123456789
test2_2();: 追加用のデータとしてStringBuilder
test2_2(): 0123456789
end: 影響テスト -----------------------------------
共通メソッドおよびクラスをインスタンス化して実行しているメソッドは次の通りとなります。
package com.example.test.test40;
import android.util.Log;
public class clsCommon {
//StringBuilderのデータをクリアする
//StringBuilderに格納されている文字列
protected void clearStringBuilderData(StringBuilder sData)
{
sData.delete(0, sData.length());
//文字シーケンスに使用されるデータを減らそうとします
//trimToSizeメソッドを使用するとcapacityメソッドの後続呼び出しで
//返される値に影響する可能性があります
//sData.trimToSize();
}
//StringBuilderの結果を表示する
//sTile:ラベル
//StringBuilderに格納されている文字列
protected void displayStringBuilderData(String sTitle, StringBuilder sData)
{
Log.d(sTitle, sData.toString());
}
protected void displayStringBuilderData(String sTitle, int iData)
{
Log.d(sTitle, String.valueOf(iData));
}
}
|
package com.example.test.test40;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//deleteのテスト
Log.d("start","deleteのテスト -----------------------------------");
clsTest1 cls1 = new clsTest1();
cls1.test1();
cls1=null;
Log.d("end","deleteのテスト -----------------------------------");
//影響テスト
Log.d("start","影響テスト -----------------------------------");
clsTest2 cls2 = new clsTest2();
cls2.test2();
cls2 = null;
Log.d("end","影響テスト -----------------------------------");
//insertテスト
Log.d("start","insertテスト -----------------------------------");
clsTest3 cls3 = new clsTest3();
cls3.test3();
cls3 = null;
Log.d("end","insertテスト -----------------------------------");
//indexOfテスト
Log.d("start","indexOfテスト -----------------------------------");
clsTest4 cls4 = new clsTest4();
cls4.test4();
cls4 = null;
Log.d("end","indexOfテスト -----------------------------------");
//deleteCharAtテスト
Log.d("start","deleteCharAtテスト -----------------------------------");
clsTest5 cls5 = new clsTest5();
cls5.test5();
cls5 = null;
Log.d("end","deleteCharAtテスト -----------------------------------");
//replaceテスト
Log.d("start","replaceテスト -----------------------------------");
clsTest6 cls6 = new clsTest6();
cls6.test6();
cls6 = null;
Log.d("end","replaceテスト -----------------------------------");
}
}
|
|
|