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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡文彬 中级黑马   /  2014-3-15 16:45  /  833 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下代码
public class StringMethods {

public static void main(String[] args)
{
  String s="Hello Java";
  String s1=s.replace("Java", "viva");
  String s2=s.replace("", "e");
  sop(s);
        sop(s1);
  sop(s2);
}
public static void sop(Object obj)
{
  System.out.println(obj);
}
}
打印结果为:
Hello Java
Hello viva
eHeeeleleoe eJeaeveae  //为什么会出现这个结果?

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

3 个回复

倒序浏览
  1. public class StringMethods {

  2. public static void main(String[] args) {
  3.    String s="Hello Java";
  4.    String s1=s.replace("Java", "viva");
  5.    String s2=s.replace(" ", "e");//此处的“”,变成了“ ”
  6.    sop(s);
  7.          sop(s1);
  8.    sop(s2);
  9.         }
  10. public static void sop(Object obj){
  11.    System.out.println(obj);
  12.         }
  13. }
复制代码
通过结果可以看到,s.replace("", "e");这句话是在每个字符之间都加了一个e,你把e去掉就可以看到Hello java
因为你的双引号之间什么都没有,所以才会出现在每个字母的前后都加上e。
不知道你是不是想把中间的空格换成e。
我重写了一下代码你看一下

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
这段程序最后一个输出语句规则中是按照每个字符前都存在一个空字符来执行,故出现此种现象
回复 使用道具 举报
ς高眼光の目标 来自手机 中级黑马 2014-3-15 19:28:17
板凳
String s2=s.replace("", "e");中前面被替换什么东西也没有,所以在每个字符中都插进一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马