黑马程序员技术交流社区

标题: String类型小困扰 [打印本页]

作者: 葛晓东    时间: 2014-6-1 19:03
标题: String类型小困扰
本帖最后由 葛晓东 于 2014-6-3 23:44 编辑
  1. public static void method_7(){
  2.                 String s = "helloworld";
  3.                 System.out.println(s);
  4. s.substring(5);
  5.                 System.out.println(s);
  6.         }
复制代码
明明截取了,为什么两输出结果一样哇?

作者: 李小然    时间: 2014-6-1 19:23
你只对字符串做了处理,但没有改变s的内容
所以输出还是原来的样子

public static void method_7(){
                String s = "helloworld";
                System.out.println(s);
                 //对s重新赋值
                 s = s.substring(5);
                System.out.println(s);
        }

就可以了

作者: felixzr    时间: 2014-6-1 19:33
版主说的很对,要改变值除非在赋值给S,String有不改变值的特征
作者: ☆枫の云    时间: 2014-6-1 19:39
分被版主抢走了{:2_32:}
作者: lin'    时间: 2014-6-1 20:23
s.SubString(5)结果是一个新的字符串,你要用一个string对象去接收(String str=s.SubString(5)),就行了,能明白吗?
作者: 葛晓东    时间: 2014-6-1 21:43
李小然 发表于 2014-6-1 19:23
你只对字符串做了处理,但没有改变s的内容
所以输出还是原来的样子

ok,明白了
作者: wyqs92    时间: 2014-6-3 14:40
大哥,你输出的是s啊!!!怎么可能不一样了。。。
作者: blackstones1    时间: 2014-6-3 15:03
大家一起加油
作者: pengyu    时间: 2014-6-3 15:25
对的,你要用一个String类型的变量接受才行呢
作者: 郝义涛    时间: 2014-6-3 15:27
希望你多看看string和StringBufffer的区别
作者: 博€$€海    时间: 2014-6-3 16:04
需要重新赋值
作者: EDDY_Liang    时间: 2014-6-3 16:38
加油。。这是初级问题,我也是这么过来的
作者: Horan    时间: 2014-6-3 18:48
String是不可变的,加油吧!
作者: 葛晓东    时间: 2014-6-3 21:58
李小然 发表于 2014-6-1 19:23
你只对字符串做了处理,但没有改变s的内容
所以输出还是原来的样子

ok    原来是忘记再次赋值了  
作者: 四顾行者    时间: 2014-6-3 22:17
System.out.println(s.subString(5));
作者: 、海    时间: 2014-6-3 22:32
定义的s没做任何赋值,所以打印的s不变。你可以直接用System.out.println(s.substring(5));
作者: 落叶非花    时间: 2014-6-3 22:56
不要这样哦,s.substring()方法调用后,应该付给一个新的变量,调用这个方法不会改变原对象的值




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