Java string concatenação

4 respostas
H

Olá!

Sou novato aqui e no mundo java. Recentemente estamos estudando Java na facul e me foi passado um trabalho que em determinado momento eu precisaria imprimir as 8 primeiras posições de uma string. Mas, como em java String eh uma classe, estou meio perdido.

A solução que achei foi a seguinte:
String Aux = "";
       for(int i=0; i<8; i++){
               Aux.concat(String.valueOf(Nome.charAt(i)));}
       System.out.println(Aux);

Mas, nao imprime nada quando eu chamo o console...

Como eu faço entao para fazer isso?

Valeuz.

4 Respostas

R

Em Java, String são ‘imutáveis’, portanto ao cada String nova que você cria, é mais um objeto em memória. Quando você faz Aux.concat(), está criando um novo objeto, porém não atrelando ele a nenhuma referência.

Faça:

Aux = Aux.concat(...)

Sugestão, para manipulação com Strings, utilize StringBuilder(Java 5.0) ou StringBuffer(1.4 e anteriores)

H

Dando uma fuçadinha melhor consegui resolver meu problema.

Utilizei dentro do for o seguinte:

Aux = Aux + Nome.charAt(i);

Mas, nao acho que isso seja muito otimizado… Intuição. Posso ta falando merda por nao conhecer muito java…

Obrigado Rafael.

R

Não é nada otimizado mesmo, pois a cada iteração será criado um novo objeto String.

Se for somente um teste ou classes para estudo, você não vai sentir diferença, mas em projetos maiores a performance melhora consideravelmente utilizando StringBuilder/StringBuffer

P

Simplificando o que vocë precisa:

Se for só imprimir e precisa imprimir uma a uma:

String nome = "Marcos Peron";

int tamPercorrer = 8;

//verifique se o tamanho da string é 8, se for menor, imprime so a qtd que pode
if (nome.length() < 8) {
    tamPercorrer = nome.length();
   System.out.println("A String é menor que o tamanho minimo 8");
}

for(int i=0; i<tamPercorrer; i++) {
     System.out.println(nome.charAt(i));
 }

O próprio println() da classe PrintStream (System.out é uma instancia estática de PrintStream) possui um metodo sobrecarregado que aceita um parametro char, entao, vc não precisa converter pra uma String.

Dá pra fazer também, se pode ser tudo de uma vez, usando o metodo substring da classe String:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

String nome = "Marcos Peron";

int tamPercorrer = 8;

//verifique se o tamanho da string é 8, se for menor, imprime so o que pode
if (nome.length() < 8) {
    tamPercorrer = nome.length();
   System.out.println("A String é menor que o tamanho minimo 8");
}
  //usa substring para pegar somente a parte que você quer
  String aux = nome.substring(0,tamPercorrer);
  System.out.println(aux);

Espero ter ajudado…

att.

Criado 25 de setembro de 2006
Ultima resposta 25 de set. de 2006
Respostas 4
Participantes 3