Ir para conteúdo
Fórum Script Brasil
  • 0

Stringbuffer


kitsune

Pergunta

Estou com um projeto de analisador léxico de modo que quero implementar o dicionário por primeiro, mas estava pensando em armazenar essa estoria de delimitadores e palavras reservadas num StringBuffer, mas aí surgiu uma dúvida, O StringBuffer armazena caracter a caracter ou pode armazenar uma palavra inteira, que no meu caso é uma String. unsure.gifunsure.gifunsure.gifunsure.gif

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

você pode implementar as duas coisas.. tanto pra ele receber apenas um caractere como uma palavra tipo String inteira. mas pra isso você vai ter que fazer a conversao de tipo..

exemplo..

int ch=0;

StringBuffer buf = new StringBuffer();

buf.append((char)ch);

System.out.print(buf.toString());

espero ter ajudo...

abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Oi kitsune. smile.gif

As classes String e StringBuffer servem basicamente pra mesma coisa: guardar uma sequencia de caracteres e oferecer métodos úteis. A classe String, porém, é totalmente imutável. Sempre que você concatena duas Strings, o compilador instancia uma StringBuffer e trabalha com ela. Depois, ele devolve pra String original. O resultado é o mesmo no final.

Então, como se pode ver, objetos StringBuffer devem ser usados sempre que a sequencia de caracteres estiver sujeita a mudanças. Além de ter uma performance muuuito melhor, ainda é thread-safe.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Eu preciso inicialmente pegar toda a sentença, no meu caso estou trabalhando para um analisador léxico SQL, digamos que a minha sentença é "SELECT * FROM TABELA;", dái eu preciso partir letra por letra e armazenar em um Vector ou StringBuffer, mas a minha outra dúvida é se para isso eu poderia utilizar uma String para armazenar tudo e depois de partir colocar tudo em um StringBuffer ou se eu devo usar dois StringBuffers????????? huh.gifohmy.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Claro que sim!!

você armazena o resultado da consulta inicialmente em um result set e depois joga isso pra uma String e varre essa string caractere por caractere pegando o que você quiser e joga isso num stringbuffer.

ex:

String Nome="";

String Endereco="";

StringBuffer str ="";

ResultSet rs = statment.executeQuery....etc....// ex Nome, Endereco

while rs.next())

{

Nome+=rs.getString(1) // onde 1 é o primeiro atributo da query

Endereco+=rs.getString(2)// atributo 2 da query...

}

for (int x=0; x<Nome.length();x++)

{

str+ = nome.charAt(x) // str recebe caractere a caractere do q está em Nome.

}

bom.. é isso... cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Claro que sim!!

você armazena o resultado da consulta inicialmente em um result set e depois joga isso pra uma String e varre essa string caractere por caractere pegando o que você quiser e joga isso num stringbuffer.

ex:

String Nome="";

String Endereco="";

StringBuffer str ="";

ResultSet rs = statment.executeQuery....etc....// ex Nome, Endereco

while rs.next())

{

Nome+=rs.getString(1) // onde 1 é o primeiro atributo da query

Endereco+=rs.getString(2)// atributo 2 da query...

}

for (int x=0; x<Nome.length();x++)

{

str+ = nome.charAt(x) // str recebe caractere a caractere do q está em Nome.

}

bom.. é isso..

Espero ter ajudado em alguma coisa... abs.. cool.gif

Gla.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu encontrei a solução para este meu problema eu criei um método que ainda não decidi em que classe vai ficar, não estou trabalhando com a lingugem SQL em si, mas é ela quem devo analisar, é apenas um analisador léxico, de modo que eu criei o dicionario com palavras reservadas do SQL padrão, em um Vector, criei um método que analisa se a palavra está no dicionario ou se ela precisa ser analisada no AFD, agora a minha dúvida é se eu posso colocar um StringBuffer sentro de um Vector, porque é mais ou menos assim, meu AFD tem três estados onde o primeiro ao ler um caracter branco, ou seja, nada, ele fica na mesma posição, se ele ler uma letra ele passa para o segundo estado, mas se ele ler um dígito ele passa para outro estado diferente, o meu grande problema neste momento é se eu devo usar um Vector para "colocar" os estados e dentro deles se eu posso, por exemplo no vector que está relacionado a letra dentro dele há um StringBuffer para armazenar cada letra do alfabeto, sejam elas maiusculas ou minusculas, e dentro do vector relacionado a dígito colocar um StringBuffer que armazene os dígitos de 0 a 9. blink.gifblink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

É seria mais ou menos isso, mas meu professor disse que o raciocino não era esse, necesariamente deve-se criar um vector para cada digamos coisas que os estados vão reconhecer, depois devo usar uma estrutura switch case para que ele passe reconheça ou não os devidos simbolos, mas uma coisa aquela estoria de que eu tinha arranjado a solução não deu certo meu professor disse que também tava errado. dry.gifdry.gifdry.gifdry.gif

Fi quei muito invocada, mas fazer o que, agora a minha dúvida é saber como que eu faço para que uma estrutura switch reconheça um caracter e a partir dele saber se existe um similar no Vector definido segundo a estrutura, tipo tenho o nome 'vanessa' para ser inserido, mas não sei como mostrar para ele qual vetor ele deve usar para começar a reconhecer vanessa, não sei se me fiz entender, m,as espero que pelo menos tentem.

Valeeu smile.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...