Javaの参照渡しの不思議な現象の検証2

その時は、サーブレットを書いていたんだけど、
インスタンス変数にして、インスタンス内でグローバルな感じで書いてみた。
その時は上手く行ったんだけど、、、

前回のソースをインスタンス変数に置き換えてみる。

public class testset2 {

	String nullString = null;
	String emptyString = "";
	String spaceString = " ";
	String fixString = "Foo";
	String refString1 = new String();
	String refString2 = new String("Bar");

	public static void main(String[] args) {
		new testset2().exec(args);
	}
	public void exec(String[] args) {

		int cnt = 0;

		System.out.println("----------" + testset2.class.getName() + "----------");

		System.out.println("----------");
		System.out.println("nullString");
		System.out.println("before[" + nullString + "]");
		method(nullString, cnt);
		System.out.println("after [" + nullString + "]");
		cnt++;
	
		System.out.println("----------");
		System.out.println("emptyString");
		System.out.println("before[" + emptyString + "]");
		method(emptyString, cnt);
		System.out.println("after [" + emptyString + "]");
		cnt++;
	
		System.out.println("----------");
		System.out.println("spaceString");
		System.out.println("before[" + spaceString + "]");
		method(spaceString, cnt);
		System.out.println("after [" + spaceString + "]");
		cnt++;
	
		System.out.println("----------");
		System.out.println("fixString");
		System.out.println("before[" + fixString + "]");
		method(fixString, cnt);
		System.out.println("after [" + fixString + "]");
		cnt++;
		
		System.out.println("----------");
		System.out.println("refString1");
		System.out.println("before[" + refString1 + "]");
		method(refString1, cnt);
		System.out.println("after [" + refString1 + "]");
		cnt++;

		System.out.println("----------");
		System.out.println("refString2");
		System.out.println("before[" + refString2 + "]");
		method(refString2, cnt);
		System.out.println("after [" + refString2 + "]");
		cnt++;
		
	}
	
	private void method(String str, int cnt) {
		String tmp = new Integer(cnt).toString();
		System.out.println(tmp);
		str = str + tmp;
		System.out.println(str);
	}
}

以下、動作結果

----------testset2----------
----------
nullString
before[null]
0
null0
after [null]
----------
emptyString
before[]
1
1
after []
----------
spaceString
before[ ]
2
 2
after [ ]
----------
fixString
before[Foo]
3
Foo3
after [Foo]
----------
refString1
before[]
4
4
after []
----------
refString2
before[Bar]
5
Bar5
after [Bar]

あらー変わってない・・・
サーブレットって、スレッドセーフ問題とかあるから
クラス変数になるのかな?
あの時、static付けたっけ?