哈,搞糊涂了把1。test.setStrOne();
此时test.str=="setStrOne"(注意是==)
2。str = test.getStr();
此时str==test.str=="setStrOne"
3。test.setStrTwo();
此时str=="setStrOne"
test.str=="setStrTwo"在第二步,str得到"setStrOne"的句柄,而不是test.str的句柄
此时test.str=="setStrOne"(注意是==)
2。str = test.getStr();
此时str==test.str=="setStrOne"
3。test.setStrTwo();
此时str=="setStrOne"
test.str=="setStrTwo"在第二步,str得到"setStrOne"的句柄,而不是test.str的句柄
String str = new String();
aTest test = new aTest();
test.setStrOne();
str = test.getStr();
System.out.println(str==test.getStr());
System.out.println(str=="setStrOne");
System.out.println("setStrOne"==test.getStr());
System.out.println("=============");
test.setStrTwo();
System.out.println(str==test.getStr());
System.out.println(str=="setStrOne");
System.out.println("setStrOne"==test.getStr());
结果:
true
true
true
=============
false
true
false
str = test.getStr();
System.out.println("1:" + str);
test.setStrTwo(); //修改的只是test类的str的值
System.out.println("2:" + str); //输出的是Action中str的值
public static void main(String[] args) {
String str = new String();
Test test = new Test();
test.setStrOne();
str = test.getStr();
System.out.println("1:" + str);
test.setStrTwo();
System.out.println("2:" + str);
}在这里,test.setStrOne();是给test中的str付值,和Action中的str没有任何关系。test.getStr()获取的是test中str的值,str=test.getStr()是把这个值在付给Action中的str,同理,test.setStrTwo()是给test中的str付值,和Action中的str没有任何关系,因此打印出的值是一样的。