Em português
http://pt.wikipedia.org/wiki/String
Em inglês (mais completo)
http://en.wikipedia.org/wiki/String_%28computer_science%29
Em português
http://pt.wikipedia.org/wiki/String
Em inglês (mais completo)
http://en.wikipedia.org/wiki/String_%28computer_science%29
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 ().
[quote]pelo amor de Deus !!!
que pergunta !!! [/quote]
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…
Quem nasce sabendo tudo é jacaré - pena que ele também não aprende nada.
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.
Lembra do strcpy(), strcat() ???
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”;
[quote=chicocx]pelo amor de Deus !!!
que pergunta !!![/quote]
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
Seu nome podia ser “Dieizoum” de uma vez… kkkkkk
abraços!
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.
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
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:
char nome = {"V", "i", "n", "í", "c", "i", "u", "s", 0};
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:
[code]public class Pessoa {
public String nome;
public Pessoa(String nome) {
if (nome == null || nome.isEmpty())
throw new IllegalArgumentException(“Nome inválido!”);
this.nome = nome;
}
public String getNome() {
return nome;
}
}[/code]
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:
Pessoa p = new Pessoa("Vinicius");
//o usuário alterou o objeto nome diretamente, portanto, não passou pela verificação de vazio da nossa classe.
p.getNome().set("");
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:
No caso do java, mesmo que usemos o método concat, estamos gerando uma nova String:
//concat retorna a String Vinícius Godoy, mas o nome, dentro da
//classe Pessoa, permanece inalterado.
p.getNome().concat(" Godoy");
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:
[code]String x = “Vinicius”;
String y = “Vinícius”;
System.out.println(x == y); //Retorna true![/code]
Mas não podemos comparar assim strings vindas de outros meios:
String x = scanner.nextLine(); //Usuário digita Vinícius
String y = scanner.nextLine(); //Usuário digita novamente Vinícius
System.out.println(x == y); //Retorna false!
Ou criadas explicitamente com o new (nesse caso, estamos pedindo ao java que não utilize o pool).
String x = new String("Vinícius");
String y = new String("Vinícius");
System.out.println(x == y); //Retorna false!
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.
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… ???