bem o código é esse:
...
String texto = "a\\b\\c";
System.out.println(texto);
texto.replace("\\", "/");
System.out.println(texto);
...
E aí alguém sabe porque isso não funciona?
bem o código é esse:
...
String texto = "a\\b\\c";
System.out.println(texto);
texto.replace("\\", "/");
System.out.println(texto);
...
E aí alguém sabe porque isso não funciona?
tente assim
...
String texto = "a\\b\\c";
System.out.println(texto);
texto = texto.replace("\\", "/");
System.out.println(texto);
...
Isso não funciona pq todos o String é imutável. Todos os métodos que “alteram” o valor da string, na verdade, criam uma nova string, com o valor alterado.
Por isso a linha 4 do colega envolve atribuir à variável de referência texto, o conteúdo dessa nova String gerada.
Valeu galera,
achei que tava ficando maluco.
Bem, só para repetir a solução aqui no final para facilitar a vizualização.
...
String texto = "a\\b\\c";
System.out.println(texto);
texto = texto.replace("\\", "/");
System.out.println(texto);
...

Em java as Strings são imutaveis. Em outras linguagens como Ruby isso não é verdade (veja o método upcase!) mas a imutabilidade um padrão interessante.
Imagine o problema
String nome = “Bill Gates”;
Fortuna.setNomeHerdeiro(nome);
nome.replace(“Bill Gates”,“Steve Jobs”);
/* se string não for imutavel, Steve Jobs acabou de ganhar uma bolada */
Em C++, strings são mutáveis.
Por outro lado, um método pode prometer para você que não alterará o conteúdo de uma string. E o interessante, é que o compilador vai garantir que ele cumpra essa promessa:
void Fortuna::setNome(const std::string& nome)
{
this->nome = nome; //ativa a construção de cópia
}
O interessante é que você pode ter métodos, que também garantem que nenhum estado será alterado. São os métodos const.
//Pode chamar getSortudo() à vontade.
//Não vai mudar de sortudo no meio do caminho.
void Fortuna::getSortudo() const
{
return nome;
}