O que é uma String ?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Filipe Cruz
Thread.start()
[Avatar]

Membro desde: 26/03/2006 13:11:16
Mensagens: 31
Offline

estou utilizando o livro da Deitel 6º edição... e to com uma duvida, o q é uma String... essa pergunta é um tanto perturbadora pq era pra eu jah tah sabendo... na verdade a minha duvida eh pra que qui ela serve... ???
thiago.correa
GUJ Master
[Avatar]

Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline

Em português
http://pt.wikipedia.org/wiki/String

Em inglês (mais completo)
http://en.wikipedia.org/wiki/String_%28computer_science%29

---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
[MSN]
christianovale
JavaChild
[Avatar]

Membro desde: 10/05/2005 14:32:08
Mensagens: 134
Localização: 000
Offline

Dê uma olhda nisso aqui, também:
http://www.guj.com.br/java.tutorial.artigo.103.1.guj

Falow!

-------------------------------
Christiano Vale
Desenvolvedor Java
[Email] [WWW] [Yahoo!] aim icon [MSN] [ICQ]
chicocx
JavaChild
[Avatar]

Membro desde: 20/03/2005 11:57:35
Mensagens: 131
Localização: Goiânia
Offline

Strings em Java são objetos que contém uma cadeia de caracteres. São imutáveis, portanto uma vez criadas não podem ser alteradas. Caso ocorra uma concatenação de Strings, um novo objeto é criado, e o antigo, automaticamente removido. Para consultar caracteres pelo índice utilize o método charAt ().

This message was edited 1 time. Last update was at 10/01/2008 22:09:27


...a arte da via é fazer da vida uma obra de arte...
Ambient Informática
Siga-me no Twitter: @chicocx
[Email] [MSN]
Deluxe
GUJ Ranger
[Avatar]

Membro desde: 26/04/2006 15:50:49
Mensagens: 793
Localização: Distrito Federal
Offline

pelo amor de Deus !!!
que pergunta !!!

lol
te garanto que tu nao nasceu sabendo..
aqui é um forum para java básico entao.. string é o basico do java, dexa o cara perguntar..

Eu tenho a humildade de aprender com as pessoas, e nao a arrogância de ensiar o que eu não sei...
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Deluxe wrote:
te garanto que tu nao nasceu sabendo..


Quem nasce sabendo tudo é jacaré - pena que ele também não aprende nada.


[WWW]
Cocota
JavaChild
[Avatar]

Membro desde: 03/04/2006 21:17:41
Mensagens: 149
Localização: Natal-RN
Offline

String cabe discussão d+!!!
muitas correntes filosóficas.

Dica inútil minha: Você vai entender a magnitude da invenção da classe String quando você usar char[] em C. Ou treinar bastante o core do java.

Ez RulEz Até de Madrugada
[WWW] [MSN]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Lembra do strcpy(), strcat() ???

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
Jaison
JavaTeenager
[Avatar]

Membro desde: 10/04/2006 15:00:31
Mensagens: 193
Localização: Santa Catarina
Offline

Estamos no tópico BÁSICO e O QUE É STRING? é uma pergunta Básica

Alguém discorda disso?!!! a pergunta do cara é relevante!

abraço!

String nome = "Jaison";

Portal Android - Comunidade de Desenvolvedores da Plataforma Android

www.portalandroid.org
[Email] [WWW] [MSN]
nefertiti
JavaChild
[Avatar]

Membro desde: 21/05/2004 11:52:43
Mensagens: 134
Localização: Curitiba/PR
Offline

chicocx wrote:pelo amor de Deus !!!
que pergunta !!!


Pelo que sei o intuito de uma lista de discussão é esclarecer dúvidas por mais que para alguns a resposta seja óbvia, mas para o rapaz não era...então ao invés de criticar passe a ele o que você sabe.


Até mais

Patty

"O conhecimento humano faz parte do mundo"
"Não use drogas...use Software Livre!"
[Email] [WWW] [MSN]
danieldestro
Moderador
[Avatar]

Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline

Seu nome podia ser "Dieizoum" de uma vez... kkkkkk
abraços!

gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol
[WWW]
jazeel
Smalltalk

Membro desde: 27/06/2007 02:25:52
Mensagens: 1
Offline

O sABI PASSA SUA SABEDORIA... SEM A SABEDORIA O MUNDO Ñ VAI P/ FRENTE... POR ISSO QUE O MUNDO ESTA DO JEITO QUE ESTA... POR PESSOAS COMO "VCS", CRITICA O PROXIMO...

Em programação e em linguagens formais, uma cadeia de caracteres (também conhecida como string) é uma sequência ordenada de caracteres (símbolos) escolhidos a partir de um conjunto pré-determinado. Em programação, cada símbolo armazenado na memória é representado por um valor numérico. Uma variável declarada com tipo de dado cadeia geralmente armazena um número pré-determinado de caracteres.

Exclerozado
Smalltalk
[Avatar]

Membro desde: 17/11/2008 06:39:20
Mensagens: 1
Offline

Na teoria seria impossivel, mas na pratica muito facil....

se não haver duvidas pra q serveriam os forum rssssss

fiz processamento de dados rsss !!!

mas esqueci quase tudo. possei aki pra relembrar oq é uma string.

rssss fui....... kambio desligo :wink:

Grupo Irmãos Metralha.
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Um caracter é um conjunto de bytes que representa um dígito, seja ele letra, número ou símbolo especial.
Por exemplo, são caracteres válidos: a, e, ç, µ ou 4.

Para escrever um texto, mais de um caracter é necessário. Na programação, precisamos representar essa cadeia de caracteres de alguma forma. A palavra "cadeia" em inglês é "string".

Ok, esse é o conceito: string são um bando de caracteres juntos. Agora, vamos falar das implementações desse conceito. Como representar um conjunto de caracteres numa linguagem?

No C, a idéia óbvia foi usar um array. A idéia básica é simples: arrays representam um conjunto de dados relacionados, que podem ser acessados por um índice. Uma cadeia de caracteres é um conjunto desses, logo, basta usar arrays para representar os caracteres. Como a cadeia pode ter um tamanho arbitrário, usaram o caracter de valor 0 para representar o fim da cadeia. Portanto, "Vinícius", em C, é um array de 9 posições, contendo:


Essa abordagem era pouco prática, e muito pouco eficiente. Para se determinar o tamanho da string, era necessário varrer a string toda e descobrir onde o 0 estava. Como praticamente todas as operações de string envolvem conhecer o seu tamanho, o impacto negativo de uma função de tamanho lenta ficou evidente logo de cara. E, nesse caso, quanto maior a String, mais lenta se torna a função.


A implementação também esbarrou em outro problema: internacionalização. Logo viram que um byte por caracter era insuficiente para representar todos os dígitos presentes no mundo. Novas tabelas e modos de codificação foram criados (como o Unicode). E, portanto, mais informações precisavam estar associadas a uma cadeia de caracteres para que ela se tornasse relevante. De fato, graças a isso, contar quantos caracteres uma String tem se tornou uma tarefa desafiadora, até mesmo em Java, mas esse é assunto para outra discussão.


Pois bem, vieram as classes e a solução lógica foi deixar o array de lado e representar a String através de uma classe. Assim, poderiamos colocar o array com os caracteres num canto, o tamanho em outro e o tipo de codificação em outro, tudo isso encapsulado na parte interna de nossa classe. O C++ introduziu a string na sua biblioteca padrão, a STL, e é a classe std::string. Por armazenar o tamanho do string, esse é um exemplo clássico onde o código OO fica muito mais rápido do que o seu representante estruturado.


O C++ permite que qualquer objeto seja tornado imutável através da palavra const. Porém, isso não é possível em java. Então, os projetistas da linguagem decidiram que, além de ser uma classe, essa classe seria imutável. Ou seja, a classe teria gets, mas não sets. Alterações seriam feitas em um outro objeto, mas não no objeto original. Por que isso?

Considere o que ocorreria com esse código, caso não fosse assim:



Esse código não seria seguro se a String não fosse imutável. O usuário do código poderia inserir um nome vazio simplesmente fazendo:


Notem que esse erro de modelagem é comum entre programadores menos experientes. Embora a classe String seja imutável, várias outras classes (como as de collections), não são.

Outras vantagens da imutabilidade é o fato dela ser inerentemente thread-safe. De fato, você pode ler mais sobre esse assunto específico nesse ótimo artigo do Goetz:
http://www.ibm.com/developerworks/java/library/j-jtp02183.html

No caso do java, mesmo que usemos o método concat, estamos gerando uma nova String:


Nem sempre desejamos a imutabilidade. Quando vamos concatenar várias coisas para gerar um texto, a criação de novas Strings pode ter uma péssima performance (já que vários objetos intermediários serão criados). É nesses casos, que recorremos a classe StringBuilder que, nada mais é, do que uma versão mutável do String. Nesse caso, usamos a mutabilidade só onde é realmente necessária, e na minoria dos casos.


Bom... ainda no C, notaram que diversas Strings são estáticas e estão presentes no código fonte (usando a declaração com aspas ""). Além disso, notaram que essas strings muitas vezes se repetiam, não eram alteradas e, portanto, poderiam economizar espaço em seu armazenamento. Por exemplo, considere as strings: banana, ana, na, nana.

Todas elas poderiam ser alocadas apenas 1 vez, e essa alocação poderia ser compartilhada entre todos os processos daquele programa. Portanto, a maior parte das linguagens cria o que chamamos de pool de strings. Basicamente, o compilador faz uma varredura de todas as String "hard coded" e gera uma área separada para elas, imutável, sem repetições e que pode ser reaproveitada por vários processos.

O java também faz isso. Por isso, podemos comparar com == Strings que são criadas com aspas, já que se referem ao mesmo objeto:



Mas não podemos comparar assim strings vindas de outros meios:


Ou criadas explicitamente com o new (nesse caso, estamos pedindo ao java que não utilize o pool).


Por isso, para comparar o conteúdo de duas String, usamos o método equals. Ele sim, analisará cada caracter dentro da String, ao invés de simplesmente olhar para a posição de memória que a String ocupa (como faz o ==).

Se faltou alguma coisa, ou falei alguma besteira, por favor, me corrijam ou complementem. E qualquer dúvida, é só perguntar.

This message was edited 6 times. Last update was at 17/11/2008 12:48:24


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team