Javaの参照渡しの不思議な現象の検証4
じゃ、Beanに詰め込んでみますか?ってことで
以下、ソースと実行結果。
public class bean { private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } }
public class testset4 { public static void main(String[] args) { int cnt = 0; bean nullString = new bean(); nullString.setStr(null); bean emptyString = new bean(); emptyString.setStr(""); bean spaceString = new bean(); spaceString.setStr(" "); bean fixString = new bean(); fixString.setStr("Foo"); bean refString1 = new bean(); refString1.setStr(new String()); bean refString2 = new bean(); refString2.setStr(new String("Bar")); System.out.println("----------" + testset4.class.getName() + "----------"); System.out.println("----------"); System.out.println("nullString"); System.out.println("before[" + nullString.getStr() + "]"); method(nullString, cnt); System.out.println("after [" + nullString.getStr() + "]"); cnt++; System.out.println("----------"); System.out.println("emptyString"); System.out.println("before[" + emptyString.getStr() + "]"); method(emptyString, cnt); System.out.println("after [" + emptyString.getStr() + "]"); cnt++; System.out.println("----------"); System.out.println("spaceString"); System.out.println("before[" + spaceString.getStr() + "]"); method(spaceString, cnt); System.out.println("after [" + spaceString.getStr() + "]"); cnt++; System.out.println("----------"); System.out.println("fixString"); System.out.println("before[" + fixString.getStr() + "]"); method(fixString, cnt); System.out.println("after [" + fixString.getStr() + "]"); cnt++; System.out.println("----------"); System.out.println("refString1"); System.out.println("before[" + refString1.getStr() + "]"); method(refString1, cnt); System.out.println("after [" + refString1.getStr() + "]"); cnt++; System.out.println("----------"); System.out.println("refString2"); System.out.println("before[" + refString2.getStr() + "]"); method(refString2, cnt); System.out.println("after [" + refString2.getStr() + "]"); cnt++; } private static void method(bean bean, int cnt) { String tmp = new Integer(cnt).toString(); System.out.println(tmp); // str = str + tmp; bean.setStr(bean.getStr() + tmp); System.out.println(bean.getStr()); } }
----------testset4---------- ---------- nullString before[null] 0 null0 after [null0] ---------- emptyString before[] 1 1 after [1] ---------- spaceString before[ ] 2 2 after [ 2] ---------- fixString before[Foo] 3 Foo3 after [Foo3] ---------- refString1 before[] 4 4 after [4] ---------- refString2 before[Bar] 5 Bar5 after [Bar5]
変わったー。
なんで?