Retorno de método

4 respostas
D

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?

4 Respostas

L

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...

discorpio

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

kritiuns

discorpio:
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);
L

discorpio:
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);
Criado 27 de maio de 2011
Ultima resposta 27 de mai. de 2011
Respostas 4
Participantes 4