Programação Java Classe String

Programação Java Classe String. Linguagem Java. Sumário: java.lang.String; – Maneiras de criar Objetos String,Pool de literais,Comparação entre Strings, Concatenação

A classe String se encontra nos pacotes padrões de java(Oque te da a habilidade de em uma forma implicita usar a Classe) e de ta a habilidade de armazenar uma sequencia de caracteres(Toda essa representação deve ficar entre aspas duplas – > “caracteres”).Veja que String é um tipo referência tanto que o primeiro S de String é maiúsculo.

Programação Java Classe String

É importantíssimo saber:
char
– É a representação de um caracter somente, em aspas simples ’ ’

String
– É a representação de um ou mais caracteres, em aspas duplas “ ”

Como Declarar um Objeto String?

Temos 2 maneiras:

1-
Usando new
String myVariable = new String(“test”);

Quando você faz essa declaração você , cria 2 objetos String em memória e coloca os caracteres em uma area reservada na heap para Literais que é chamada de Literal pool.

2- Sem usar a keyword new, A classe String é um tipo diferente em java, a única classe que aceita ser instanciada sem usar new:

String myVariable = “test”;

ou

String myVariable = (“test”);

Quando você faz essa declaração você, cria 1 objeto String em memória e coloca os caracteres em uma area reservada na heap para Literais que é chamada de Literal pool(Isso se os caracteres ja não existirem no Literal Pool), Para evitar a duplicação desnecessária de objeto String em memória , crie objetos String sem a keyword new.

Oque é esse Pool de literais?

Vamos a um exemplo, Esse exemplo serve tanto para Variaveis de referência Local quanto para variáveis de referência Atributo, toda variável do tipo String tem uma variável atributo chamada(Comparador de valor C) que tem o endereço de memória dos caracteres no Pool de literais: – A classe String mantem um POOL DE LITERAIS –

public class MinhaClasse{

public static void main(String[] array){

String minhaVariavel = “test”; //Instanciei um objeto String com a representação em
//caracteres

}
}

Teremos a representação somente da Local Variable referente ao frame de main() e a Heap referente a arquitetura da instância da Jvm operando sobre esse Class File,
Vejamos oque acabamos de fazer:

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar


E se eu tiver outra String com o mesmo valor de caracteres?

Então temos somente uma representação no Pool de literais de representação de caracteres(Isso somente acontence se instanciarmos o objeto String sem a keyword new):- A classe String mantem um POOL DE LITERAIS – Se uma String literal ja existe no Pool então uma referência para o Pool será o endereço da Referência ao Comparador, Isso para Strings sem o uso da keyword new e com a mesma sequência de caracteres e ordem


public class MinhaClasse{

public static void main(String[] array){
String minhaVariavel = “test”;
String minhaVariavel2 = “test”;

}
}

Exemplos Java,Linguagem Java, Programação, Java

Clique na imagem para ampliar,Toda vez que você cria um literal String a jvm checa o pool de Literal primeiro, se a string não existir no pool de literal então é colocado no pool a nova representação(Isso sem usar a keyword new).

Mais exemplo:

public class MinhaClasse{

public static void main(String[] array){
String minhaVariavel = “test”;
String minhaVariavel2 = “gol”;

}
}

Vejamos oque aconteceu:

Exemplos Java,Linguagem Java, Programação, Java


Clique na imagem para ampliar,
A manipulação é feita por um algoritmo da Classe.

E com a keyword new?
Objetos String com a keyword new, não se referem a objetos na Pool de literais porem pode ser feito com o método da classe String intern().

public class MinhaClasse{

public static void main(String[] array){
String minhaVariavel = “test”;
String minhaVariavel2 = new String(“test”);

}
}

Vejamos oque aconteceu:

Programação Java Classe String

Clique na imagem para ampliar,
A manipulação é feita por um algoritmo da Classe.

Comparação entre String:

Temos 2 maneiras básicas de comparação:
1- o sinal de igual(Operador == )
2 o método equals()

O operador == (igual):
Avalia o endereço de memória das Strings dentro do comparador de valor C, vamos a um exemplo:

Instanciando um Objeto String sem a keyword new:

public class MinhaClasse{
public static void main(String[] array){

String minhaVariavel = “test”;
String minhaVariavel2 = “test”;

}
}

minhaVariavel == minhaVariavel2 ?
Sim a resposta é true, vejamos o porque:

Exemplos Java,Linguagem Java, Programação, Java
Clique na imagem para ampliar,Perceba que o teste é feito no Comparador de valor C, Agora me responde você, 0xA2 = 0xA2?

Instanciando um objeto String com a keyword new:

public class MinhaClasse{

public static void main(String[] array){
String minhaVariavel = “test”;
String minhaVariavel2 = new String(“test”);

}
}

minhaVariavel == minhaVariavel2 ?
Não a resposta é false, vejamos o porque:

Exemplos Java,Linguagem Java, Programação, Java

Clique na imagem para ampliar,Perceba que o teste é feito no Comparador de valor C, Agora me responde você, 0xA2 = 0xA3?


Usando o método equals():

Retorna true se ambos tem o mesmo conteudo, ou seja a mesma sequência e ordem de caracteres.

Instanciando um Objeto String sem a keyword new:

public class MinhaClasse{
public static void main(String[] array){

String minhaVariavel = “test”;
String minhaVariavel2 = “test”;

}
}

minhaVariavel.equals(minhaVariavel2)?
Sim a resposta é true, os caracteres “test” nessa sequência e ordem são iguais a esse: “test”? Sim claro.


Instanciando um objeto String com a keyword new:

public static void main(String[] array){
String minhaVariavel = “test”;
String minhaVariavel2 = new String(“test”);

}
}

minhaVariavel.equals(minhaVariavel2)?

Sim a resposta é true, os caracteres “test” nessa sequência e ordem são iguais a esse: “test” ? Sim claro.

Concatenação de String:

O operador(+ somar) é usado para concatenar Strings, veja o exemplo:

String myVariable = “He”;
String myVariable1 = “llo”;
String myVariable2 = myVariable + myVariable1;

Qual o valor de myVariable2?
“Hello”!!!

Convertendo String em Tipos Primitivos:
Se você quer converter um objeto String em tipos Primitivos pode usar uma classe associada com o tipo primitivo. Cada tipo primitivo tem uma classe associada com ela:

double – > Double
int – > Integer
etc

*Veja que Classes começam com letra maiúscula
E todas essas Classes tem método utilitários que fazem essa conversão, exemplo:

String d = “2”;
double variable = Double.parseDouble(d);

Agora variable vale 2.0

É hora da revisão:

– Temos 2 maneiras de se instanciar objetos String, Usando a keyword new ou não usando
– Toda vez que instanciamos um objeto String sem a keyword new, mantemos a representação de caracteres dentro de um pool, onde ela não sera duplicada se ja tiver uma representação em igual ordem e representação
– Se instanciar objeto String com a keyword new, mesmo que ja haja a representação no pool em ordem e sequência mesmo assim sera duplicada a sequência(gasto de memória)
– O operador ==(igual) avalia endereços de memória, o método equals() avalia o conteúdo dos objetos
– Concatenação é a junção do conteúdo de uma String com o conteúdo de outra
– É importantíssimo saber:
char – É a representação de um caracter somente, em aspas simples ’ ’
String – É a representação de um ou mais caracteres, em aspas duplas “ ”

– Todo objeto String pode ser convertido em um numero literal ou um caracter(char), usando a classe associada ao tipo literal

Próximo post Operadores Relacionais, Condicionais e Controle de fluxo!!!

Cya DUDES!!!