Baixe o app para aproveitar ainda mais
Prévia do material em texto
TIPOS DE DADOS E IDENTIFICADORES Thaís Alves Burity Rocha Agenda Tipos de dados Tipos primitivos Tipos referenciados Conversão de tipos Atribuição e Inicialização Identificadores Introdução Variáveis de instância (atributo) Variáveis de classe (static) Variáveis locais Parâmetros Variáveis de referência Introdução Uma variável é um container, ela armazena algo Espaço em memória Em Java, variáveis devem ter tipo, tamanho e nome Tipo: Identifica a natureza da informação armazenada Tamanho: Capacidade de armazenamento da variável Para algumas variáveis, é definido pelo tipo Nome: Identificador da variável, usado para acessá-la Introdução Ou seja, Java é uma linguagem com tipagem estática E muitas outras, como C e C++ Outras linguagens, como Groovy e Python, suportam tipagem dinâmica também O tipo da variável é inferido pelo valor atribuído, podendo ser alterado também def v= 3 //pode armazenar qualquer valor v= "casa" v= false v= 10.5 Tipos em Java Primitivos int long double ... Referência classes (String, Object, Livro, Conta, etc.) interfaces arrays Os elementos de um tipo primitivo são valores, enquanto os elementos de um tipo referência são referências para objetos! Tipos Primitivos byte Inteiro de 8 bits, com sinal O bit mais à esquerda é usado para representar o sinal (1 significa negativo, 0 significa positivo) Os demais bits representam o valor 7 bits podem representar 27=128 valores Valores positivos : 0 a 127 Valores negativos: -1 a -128 Logo, os valores representados por uma variável do tipo byte estão no intervalo [-128, 127] Tipos Primitivos Tipo Valor Tamanho (bits) Valor mínimo Valor máximo Valor default boolean true ou false depende da JVM n/a n/a false char inteiro positivo que representa um caractere Unicode 16 0 216-1 \u0000 byte inteiro 8 -27 27-1 0 short inteiro 16 -215 215-1 0 int inteiro 32 -231 231-1 0 long inteiro 64 -263 263-1 0 float ponto flutuante 32 n/a n/a 0.0 double ponto flutuante 64 n/a n/a 0.0 Não se aplica à variáveis locais Tipos Primitivos: Declaração, Inicialização e Atribuição int x; int m=10, n=11; x = 234; byte b = 89; boolean isFun = true; double d = 3456.98; char c = ‘f’; int z = x; boolean isPunkRock = false; isFun = isPunkRock; int w = 999999; long big = 3_456_789; Tentar armazenar 128 causa erro Se for atribuído 100 e a variável for impressa, será exibido d Tipos Primitivos: Atribuição É possível atribuir um tipo menor à um tipo maior O contrário causa erro Mesmo que o valor em si caiba na variável O valor não é verificado, apenas o tipo das variáveis em questão É necessário fazer uma conversão int x = 24; byte b = x; byte b = 24; int x = b; Tipos Primitivos: Conversão Casting: Conversão explícita (<tipo>) <expressão> Tipos compatíveis int c = (int) b; short e = (short) a; int a = 1234; long b = a; short d = 10; Conversão implícita Conversão explícita (pode acarretar perda de dados!) Tipos Primitivos: Atribuição Tipos primitivos podem armazenar: Literais Literais decimais são considerados int Literais de ponto flutuante são considerados double O valor de outra variável Conversão implícita Conversão explícita O resultado de uma expressão Será visto posteriormente Cuidado! byte b = 89; float f1 = 32.5; float f2 = 32.5f; Tipos Referenciados Se não é tipo primitivo, é tipo referenciado Ex: String, Bicicleta, Conta, Empregado, ... São definidos por classes Ao invés de representar valores, representam referências para objetos O objeto em si está na memória Heap A variável de referência contém bits que representam uma maneira de chegar ao objeto Valor default: null Não se aplica à variáveis locais, somente à atributos Tipos Referenciados: Exemplo Pense na variável de referência c como sendo um “controle remoto” de um objeto Cachorro Ela será usada para acessar o objeto e fazer algo, como chamar o método latir() Cachorro c = new Cachorro(); c.latir(); Primitivos x Referenciados Variáveis de tipo primitivo guardam o conteúdo (bits que representam o valor) int x = 3; Variáveis de tipo referenciado guardam endereços String nome = null; String nome = “Laboratório”; x 011 nome null nome “Laboratório” Tipos Referenciados: Exemplos Cachorro c1 = new Cachorro(); Cachorro c2 = c1; Gato g1 = c2; Voltaremos a falar em atribuição de tipos referenciados com interface, herança e polimorfismo Tipo String em Java Não é tipo primitivo Uma variável String é uma referência para um objeto Há 2 formas de criar um objeto String Atribuindo um literal simplesmente Chamando o construtor String nome = new String(“Maria”); String nome = “Maria”; O objeto é criado no Pool de Strings O argumento é criado no Pool de Strings, mas também é criado um objeto no Heap Tipo String em Java Strings são imutáveis Pool de Strings s1 String s1 = “abc”; String s2 = s1; s1 = s1.concat(“def”); Pool de Strings Pool de Strings “abc” “abc” “abc” “abcdef” s1 s1 s2 s2 Tipo String em Java Qual a vantagem em ser imutável? Economia de memória! Quando criados como literais, Strings residem no Pool de Strings Sempre que uma nova String vai ser criada, a JVM verifica se ela já existe no Pool de Strings Caso exista, apenas é criada uma nova referência (aliasing) Em regra geral, Strings criadas como literais são sempre referenciadas e por isso não estão passíveis de ser removidas pelo coletor de lixo Tipo String em Java API de Java oferece vários métodos para manipulação de Strings int length() String toUpperCase() String toLowerCase() char charAt(int index) char[] toCharArray() String replace(char old, char new) String substring(int begin) Tipo String em Java Tipos “similares”: StringBuffer e StringBuilder São mutáveis Oferecem mais opções de métodos para manipulação de texto Identificadores Identificadores não podem conter caractere especial, exceto $ e _ Ex: ?ano, dia!mês Ex: _ano, dia$mes Identificadores não podem começar com números Ex: 1x, 1_t Ex: x1, t_1 Identificadores não podem conter operadores matemáticos Ex: dia+mes Pode começar com $ e _, inclusive Identificadores Palavras reservadas da linguagem não podem ser usadas como identificador new byte char double float for abstract final native static else while do switch case class extends if import return catch finally try throw throws int long short public private stricfp synchronized transient volatile void default protected break continue assert interface boolean package super this instanceof implements const goto enum Identificadores Identificadores são case-sensitive int contador; int CONTADOR; int cOnTaDoR; Identificadores diferentes Identificadores Convenção: Semelhante à métodos Inicial minúscula Junção de palavras captalizadas Nomes curtos Nomes significativos
Compartilhar