哈,搞糊涂了把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的句柄

解决方案 »

  1.   

    改成:
    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
      

  2.   

    test.setStrOne();
    str = test.getStr();  
    System.out.println("1:" + str);
    test.setStrTwo();  //修改的只是test类的str的值
    System.out.println("2:" + str); //输出的是Action中str的值
      

  3.   

    class Action {
    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没有任何关系,因此打印出的值是一样的。