A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范龙波 高级黑马   /  2013-4-29 00:30  /  1469 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 范龙波 于 2013-4-29 01:26 编辑

class StringDemo
{
         String x="abcdefg";
         public void TiHuan()
        {
                 x.replace('a','b');                    //我想知道为什么我这么写打印出来的x值还是原来的"abcdefg",如果写成x1=x.replace('a','b');打印x1就能打印出替换后的结果,有点想不明白请明白人给解释一下谢谢。
                System.out.println(x);
         }

}
class Demo
{
        public static void main(String[] args)
        {
                StringDemo i=new StringDemo();
               
                i.TiHuan();
        }
}

5 个回复

倒序浏览
class StringDemo
{
         String x="abcdefg";
         public void TiHuan()
        {
                String str = x.replace('a','b');
           System.out.println(str);
         }

}
class Demo
{
        public static void main(String[] args)
        {
                StringDemo i=new StringDemo();
               
                i.TiHuan();
        }
}

replace函数,它执行后,返回的是一个替换后的字符串;
它并没有将原有的数据给替换掉,而是返回一个替换后的字符串,所以,如果你没有将原有的字符串进行再赋值,就会像你所说的一样,输出原有的数据
回复 使用道具 举报
smallsea 发表于 2013-4-29 00:53
class StringDemo
{
         String x="abcdefg";

明白了,因为x是String 型的是吧。
回复 使用道具 举报
replace方法并没有改变字符串本身的值,而是通过replace方法的返回值来获取想要的字符串
回复 使用道具 举报
楼主的replace方法没有看明白;
public String replace(char oldChar,char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
您的x依然指向的是原来的字符串。你想得到的结果可以这样:我改了下代码
  1. class StringDemo
  2. {
  3.           String x="abcdefg";
  4.           public void TiHuan()
  5.          {
  6.                  
  7.                 System.out.println( x.replace('a','b'));//这里返回的是新的字符串,可以直接打印出来。之前您的x没有变,依然是指向原来的字符串
  8.           }

  9. }
  10. class Demo
  11. {
  12.          public static void main(String[] args)
  13.          {
  14.                  StringDemo i=new StringDemo();
  15.                  
  16.                  i.TiHuan();
  17.          }
  18. }
复制代码
回复 使用道具 举报
赵崇友 发表于 2013-4-29 11:05
楼主的replace方法没有看明白;
public String replace(char oldChar,char newChar)
返回一个新的字符串, ...

明白了,非常感谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马