VC の MFC になれているとJava の Stringとの違いで悩むかもしれない。
String a = "test";
a.toLowerCase();
a.trim();
等のメソッドは戻り値がメソッドで処理された新しいStringインスタンスが返される。
このとき a が参照しているオブジェクト自体には何の変更も無く a は同じ "test" オブジェクトを参照しつづける。そもそも String クラスは生成した文字列を変更することはできず、 String変数に新たに別オブジェクトを割り当てることで文字列を置き換えている。
[StringMethod.java]
/**
* tringクラスメソッド サンプルクラス
*/
public class StringMethod {
public static void main(String[] args) {
String a = "aAa";
String b;
b = a;
print2String(a, b);
a.toLowerCase(); // a のインスタンスへは変更なし
print2String(a, b);
b = a.toLowerCase();
print2String(a, b);
}
static void print2String(String a, String b) {
System.out.println("a=" + a + " b=" + b + " a==b=" + (a == b));
}
}
実行結果
a=aAa b=aAa a==b=true
a=aAa b=aAa a==b=true
a=aAa b=aaa a==b=false