当前位置: 首页 > 面试题库 >

在Java中,为什么String.Replace之后的String值没有更改?

萧丁雨
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视为Best,但是令我惊讶的是输出是Test。

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

提前致谢 。


问题答案:

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

您可以执行以下操作:

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

这是重新分配。



 类似资料:
  • 我对下面的程序有一个问题 请看下面的程序 我所期望的是,一旦我运行这个程序,我会认为putput是最好的,但令我惊讶的是,输出是测试。 谁能告诉我,为什么会这样?? 提前感谢。

  • 问题内容: 在Java中,为什么以下代码行不起作用? 如果我将其更改为 起初,我以为您可能没有接口列表,但是我可以创建一个很好的接口。 有想法吗? 问题答案: 泛型类型比较古怪。 表示或任何子类型,但仅表示。如果您想要一个子类型,您需要 我怀疑你可以用 无法执行此操作的原因是,您可以使用对引用的引用,并且必须谨慎使用额外的间接级别。 使用泛型,您可以有两个间接级别,这会给您带来问题,因此它们更容易

  • 问题内容: 我应该如何用Java 声明方法? 像这样: 或像这样: 和如果有的话,实际上有什么区别? 问题答案: 我应该如何在Java中声明main()方法? 和在内部同样的事情,即,字符串的数组。区别在于,当您使用varargs参数()时,可以像下面这样调用方法: 并且当您将参数声明为String数组时, 必须以 这种方式调用: 和…(如果有)之间到底有什么区别? 约定是用作主要的方法参数,但也

  • 问题内容: 我知道每次键入字符串文字时,字符串池中都会引用相同的String对象。 但是,为什么String API不包含,所以我可以使用引用? 至少,这将节省编译时间,因为编译器将知道引用现有的String,而不必检查是否已创建它以进行重用,对吗?我个人认为,字符串文字(尤其是很小的文字)在许多情况下是一种“代码异味”。 那么是否没有String.Empty背后的宏伟设计原因,还是语言创建者根本

  • 问题内容: 在Java中,有和接口。两者都属于Java的标准框架,并提供了一种访问元素的分类方法。 但是,据我了解没有。你可以用来对列表进行排序。 知道为什么要这样设计吗? 问题答案: 列表迭代器首先确保你以列表的内部顺序(也称为插入顺序)获取列表的元素。更具体地说,它是按照插入元素的顺序或操作列表的方式进行的。排序可以看作是对数据结构的一种操作,有几种方法可以对列表进行排序。 我将按照自己的见解

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