在另一个字符串的开头插入字符串

新手上路,请多包涵

如何在StringBuilder和String的开头插入一个用双引号括起来的字符串?

例如:

 StringBuilder _sb = new StringBuilder("Sam");

我需要将字符串“Hello”插入到“Sam”的开头,O/p 是“Hello Sam”。

 String _s = "Jam";

我需要将字符串“Hello”插入到“Jam”的开头,O/p 是“Hello Jam”。

如何做到这一点?

原文由 Gopi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

第一种情况是使用 insert() 方法完成的:

 _sb.insert(0, "Hello ");

后一种情况可以使用字符串上的重载 + 运算符来完成。这在幕后使用了 StringBuilder:

 String s2 = "Hello " + _s;

原文由 unwind 发布,翻译遵循 CC BY-SA 2.5 许可协议

其他答案解释了如何在另一个 StringStringBuilder (或 StringBuffer )的开头插入一个字符串。

但是,严格来说,您不能将一个字符串 插入到 另一个字符串的开头。 Java 中的字符串是不可变的1 。

当你写:

 String s = "Jam";
s = "Hello " + s;

您实际上正在创建一个新的 String 对象,它是“Hello”和“Jam”的串联。您实际上根本没有将字符插入现有的 String 对象中。


1 - 在技术上可以使用反射来打破对 String 对象的抽象并改变它们……即使它们在 _设计上是不可变的_。但这样做是一个 _非常糟糕的主意_。除非您知道 String 对象是通过 new String(...) 显式创建的,否则它可以共享,或者可以与其他 String 对象共享内部状态。最后,JVM 规范明确指出使用反射更改 a final 的代码的行为是未定义的。 String 对象的突变是危险的。

原文由 Stephen C 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题