Imutabilidade de string Java e Usando o mesmo valor de string para criar uma nova string

Eu sei que o título da pergunta não é muito claro, desculpe por isso, não sabia como colocá-lo. Eu tenho uma pergunta de implementação java muito básica que quero focar no desempenho do aplicativo, mas também envolve o padrão de criação de String em java.

Eu entendo o conceito de imutabilidade de Strings em Java. O que não tenho certeza é que li em algum lugar que o seguinte não criará dois objetos String diferentes:

String name = "Sambhav";
String myName= "Sambhav";

Eu quero saber como o Java faz isso? Ele realmente procura um valor String na memória do programa e verifica sua existência e, se ele não existe, cria um novo objeto String? Nesse caso, obviamente, ele está economizando memória, mas há problemas de desempenho.

Também digamos que eu tenho um código como este:

  public void some_method(){
        String name = "Sambhav";
        System.out.println(name); //  or any random stufff
  }

Agora, em cada chamada dessa função, há uma nova String sendo criada e adicionada à memória ou estou usando o mesmo objeto String? Estou apenas curioso para saber sobre as idéias de como tudo isso está acontecendo?

Além disso, se dizemos que

String name = "Sambhav";
String myName= "Sambhav";

não criará um novo objeto por referência, e quanto a

String name = new String("Sambhav");
String myName= new String("Sambhav");

O Java ainda será capaz de perceber que a string é a mesma e apenas aponta myName para o mesmo objeto que foi criado na instrução anterior?

questionAnswers(4)

yourAnswerToTheQuestion