public class Base{

public void test(){
String aStr=" one ";//前后有空格
String bStr=aStr;
aStr.toUpperCase();
aStr.trim();
System.out.println("["+aStr+","+bStr+"]");
}

}
public class Test {

public static void main(String[] args) {
new Base().test();
}}控制台输出的结果是[ one , one ],不明白为什么在执行了toUpperCase()和trim()方法后是这个结果,望指点!

解决方案 »

  1.   

    你想去掉字符串前后空格,并转换为大写字母,应该这么写:
    bstr=astr.trim().toUpperCase();
    或者bstr=astr.toUpperCase().trim();
      

  2.   

    String bStr=aStr;
    aStr.toUpperCase();
    aStr.trim();java是字符串常量,值不可以被修改,楼主可以这样,
    String bStr=aStr;
    bStr=aStr.toUpperCase().trim();之后就可以了 关于这个问题楼主可以找点资料看一下堆和栈  有助于楼主理解!!!
      

  3.   

    toUpperCase()有返回值
    你可以:aStr=aStr.toUpperCase();
      

  4.   

    String aStr=" one ";//前后有空格
    String bStr=aStr; //bStr 是指向astr
    aStr.toUpperCase();//aStr是字符串 是不可修改的 虽然这行代码已经修改(在别处进行) 但是不能去覆盖aStr
    aStr.trim();
    System.out.println("["+aStr+","+bStr+"]");
      

  5.   

    有些函数会改变操作对象的原有值,而有些函数只是对对象的副本进行操作。
    以前好像哪里看过:破坏性函数和非破坏性函数。这样更好理解吧。以下两个函数属于非破坏性函数,是对副本进行操作,并返回结果,因此需要用变量将结果存起来。
    aStr.toUpperCase();
    aStr.trim();
    应该改为:
    aStr=aStr.toUpperCase();
    aStr=aStr.trim();
      

  6.   

    aStr.toUpperCase();
    aStr.trim();
    这两句只是调用了String类的方法,并没有改变原来aStr的值。
    要改变aStr的值应该将调用方法后的值在赋给aStr 即:
    aStr = aStr.toUpperCase();
    aStr = aStr.trim();