当前位置: 首页 > 知识库问答 >
问题:

为什么String值在String之后没有改变。用Java代替?[重复]

艾和通
2023-03-14

我对下面的程序有一个问题

请看下面的程序

public class Kiran {

    public static void main(String args[]) {

        String str = "Test";

        str.replace('T', 'B');

        System.out.println("The modified string is now " + str);
    }

}

我所期望的是,一旦我运行这个程序,我会认为putput是最好的,但令我惊讶的是,输出是测试。

谁能告诉我,为什么会这样??

提前感谢。

共有3个答案

程鸿煊
2023-03-14

Java中的字符串是不可变的-它们不能更改。当您使用str.replace之类的函数时,它不会就地更改字符串,而是返回一个新的字符串对象,其中包含您请求对其进行的更改。这在字符串的文档中有说明:

返回一个新字符串,该字符串由newChar替换该字符串中所有出现的oldChar生成。

为了将来参考,Java的留档非常彻底,并详细解释了方法期望什么参数,它们返回什么参数,以及它们有什么副作用(如果有的话)。

魏健柏
2023-03-14

字符串。replace不更改字符串内容,但返回替换结果。您应该执行以下操作

str = str.replace('T', 'B');
辛弘壮
2023-03-14

字符串在Java中是不可变的,这意味着您不能更改它们。当您调用替换方法时,您实际上正在创建一个新的String。

您可以执行以下操作:

String str = "Test";
str = str.replace('T', 'B');

这是一次重新分配。

 类似资料:
  • 问题内容: 我对此下面的程序有疑问 请参阅下面的程序 我期望的是,一旦运行此程序,我应该将putput视为Best,但是令我惊讶的是输出是Test。 谁能告诉我,为什么会这样? 提前致谢 。 问题答案: 字符串在Java中是不可变的,这意味着您无法更改它们。当您调用replace方法时,您实际上是在创建一个新的String。 您可以执行以下操作: 这是重新分配。

  • 我应该如何在Java中声明方法? 这样地: 或者像这样: 字符串[]和字符串之间的区别是什么 如果有?

  • 我们可以对String数组有两个声明 1. 2个 有人能告诉我区别吗

  • 问题内容: 我是第一次遇到,很惊讶,因为Java已经具有一个非常强大的类,可以追加。 为什么要上第二堂课? 在哪里可以了解更多信息? 问题答案: 不允许附加。你在上调用的每个方法都会创建一个新对象并返回它。这是因为String它是不可变的-无法更改其内部状态。 另一方面是可变的。调用时,它会更改内部char数组,而不是创建新的字符串对象。 因此,拥有: 而不是,这将创建500个新的字符串对象。 请

  • 问题内容: 我一直在尝试设计一种用Pattern / Matcher实例替换多个String#replaceAll调用的方法,希望它比我当前在String中替换文本的方法要快,但是我不确定该怎么做关于它。 这是我要操作的字符串的示例: 如您所见,有多个@字符,中间有3个字符。情况总是如此。如果我想替换“ @ xxx @”的每个实例(其中xxx可以是0到9之间的任何小写字母或数字),最有效的解决方法

  • 问题内容: 为什么大多数其他数据类型都没有Java的String基本类型? 问题答案: 字符串是一个对象,根本不是原始类型,只是一个字符数组。James Gosling的访谈 摘录摘述了Java中根本存在原始类型的原因,这很有趣。 Bill Venners: Java为什么会有原始类型?为什么不是所有事物都只是一个对象? James Gosling: 完全是效率问题。有各种各样的人已经建立了以in