黑马程序员技术交流社区

标题: 复习时,碰到的一个小小问题,很好玩 [打印本页]

作者: HM李超    时间: 2013-3-11 02:09
标题: 复习时,碰到的一个小小问题,很好玩
代码:
class StringTrimDemo
{
    public static void main(String[] args)
    {
        String str = " Hello ";
        str+="World ";
        str.trim();
        System.out.println(str);
    }
}
结果: (前后都有空格)
代码换成这样就对了:
class StringTrimDemo
{
    public static void main(String[] args)
    {
        String str = " Hello ";
        str+="World ";
        //str.trim();
        System.out.println(str.trim());
    }
}
结果: (前后空格被去掉)

这是为什么呢?第一道程序中我明明是调用了trim方法去除了str的前后空格的,但是输出的时候为什么还是有空格?也不知道是学太晚,脑子昏沉沉的还是怎么了,
我发在这里大家帮我理解理解。


作者: 黑马潘浩    时间: 2013-3-11 02:57
开始你虽然调用了str.trim()方法,但是没有保存其返回的结果,应该定义变量,把str.trim()赋值给变量,在打印变量就可以了。
  1. class StringTrimDemo
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         String str = " Hello ";
  6.         str+="World ";
  7.         String s=str.trim();
  8.         System.out.println(s);
  9.     }
  10. }
复制代码

作者: amen0205    时间: 2013-3-11 04:27
String类的  trim方法 当字符串不为null  不是""  两端至少有一端有空格 的时候    会创建一个新字符串用来保存去除空格后的字符串    类似subString   

你第一中方法没有调用trim后虽然创建了一个新的字符串  但对原字符串没有影响  你继续输出  还是没有改变

你应该String  s= str.trim();
        System.out.println(s);    就OK了
作者: 沈文杰    时间: 2013-3-11 07:16
建议多看下API, 这个是有返回值的
String trim()
          返回字符串的副本,忽略前导空白和尾部空白。
字符串一经创建就不会被改变。
作者: 张文星    时间: 2013-3-11 10:24
此方法会创建一个新的字符串返回,而不是在原字符串上进行修改~~~
作者: 高梦晓    时间: 2013-3-11 10:53
由于String类提供了数值不可改变的字符串,因此String类的trim方法必须要有放回类型才能改变,不可能在本身对象上直接改变!
作者: ____囧    时间: 2013-5-24 11:28
class StringTrimDemo
{
    public static void main(String[] args)
    {
        String str = " Hello ";
        str+="World ";
       // str.trim();// String trim()  返回字符串的副本,忽略前导空白和尾部空白。 你这里等于新建了一个字符串,并没有影响前面的。改成
        String str2 = str.trim();
        System.out.println(str2);
    }
}
作者: 高腾    时间: 2013-6-13 18:48
字符串类型是不可变的

而String类的Trim()方法是有返回值的

需要用一个新的字符串来指向返回值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2