Considere o seguinte código:String valor = "Curso da Caelum";
valor.replace('a', 'o');
System.out.println(valor);A saída será “Curso da Caelum” e não “Curso do Coelum”, como sugere a linha 2, isso porque o retorno do método replace não foi atribuído a nenhuma variável. O correto seria na linha 2: valor = valor.replace('a','o')Aí vem a pergunta: pra onde foi o retorno do método? O correto não seria o compilador lançar um erro, uma vez que o método obrigatoriamente sempre terá um retorno?
Retorno de método
4 Respostas
Não. O retorno está perdido no espaço que será coletado pelo coletor de lixo, eventualmente. Se você quer usar ou não o retorno do método, é escolha sua.
E a saída só está "errada" porque String é imutável. Se você tem um objeto que retorna algo E muda de estado, dá "certo" do mesmo jeito.
Por exemplo:List<String> ax = new ArrayList<String>(Arrays.asList("1", "2", "3"));
String removido = ax.remove(1);
System.out.println(ax);
Vai imprimir [1, 3] independente do valor ser alocado em "removido" ou não...
Bom dia a todos.
O método replace(“a”,“o”) só mudará a primeira ocorrência de “a” dentro da String “Curso d[color=red]a[/color] Caelum”, tanto até que o resultado foi “Curso d[color=red]o[/color] Calelum”.
Se voce deseja mudar todos os "a"s por "o"s, então utilize o método replaceAll;
String valor = "Curso da Caelum";
valor.replaceAll('a', 'o');
System.out.println(valor);
Um abraço.
Jorge da Silva Abreu
Bom dia a todos.O método replace(“a”,“o”) só mudará a primeira ocorrência de “a” dentro da String “Curso d[color=red]a[/color] Caelum”, tanto até que o resultado foi “Curso d[color=red]o[/color] Calelum”.
Se voce deseja mudar todos os "a"s por "o"s, então utilize o método replaceAll;
String valor = "Curso da Caelum"; valor.replaceAll('a', 'o'); System.out.println(valor);Um abraço.
Jorge da Silva Abreu
O que vc disse está certo porém a saida do sysout vai ser “Curso da caelum” pois o método replace e replaceAll ‘retorna’ o resultado e não modifica a variavel que contém esse valor.
String valor = "Curso da Caelum";
String valorfinal = valor.replaceAll('a', 'o');
System.out.println(valorfinal);
String valor = "Curso da Caelum"; valor.replaceAll('a', 'o'); System.out.println(valor);
String é imutável. Se você quer aproveitar o resultado de um replace/replaceAll, atribua o valor a alguma variável.
String valor = "Curso da Caelum";
valor = valor.replaceAll('a', 'o');
System.out.println(valor);