Java Básico: Tipos de Dados Primitivos e muito mais

Neste artigo apresentamos o que são tipos de dados primitivos, variáveis, operadores aritméticos, comentários, constantes e concatenação em Java.
A linguagem de programação Java é fortemente tipada, o que significa que todas as variáveis devem primeiro ser declaradas antes de poderem ser utilizadas. Isto implica que em Java devemos primeiro informar o tipo da variável e o nome, por exemplo:

int x = 1;

Neste caso a variável z é de tipo inteira e possui o valor inicial de 1. Um tipo de dado determina quais valores podem ser armazenados em uma determinada variável, além das operações que podem ser executadas com a mesma.

Tipos de dados primitivos:

No Java, existem algumas palavras reservadas para a representação dos tipos de dados básicos que precisam ser manipulados para a construção de programas. Estes tipos de dados são conhecidos como tipos primitivos ou tipos primários.

Como tipos de dados primitivos, entendemos aqueles tipos de informação mais usuais e básicos.

• Um tipo primitivo para representação dos valores booleanos é o boolean ele não é um valor numérico, só admite os valores true(verdadeiro) ou false(falso). Também são conhecidos como DADOS LÓGICOS, ele é empregado para realizar testes lógicos em conjunto com operadores relacionais e dentro de estruturas de decisão e repetição.

• Um tipo primitivo para representação de caracteres é o char: Usa o código UNICODE e ocupa cada caractere 16 bits.É utilizado para DADOS TEXTUAIS: É possível representar dois tipos de elementos textuais em Java: caracteres e textos. A representação de um caractere solitário é feita pelo tipo char e a representação de textos é feita pela classe String. Enquanto o tipo de char representa apenas um caractere, a representação de textos deverá ser feita pela classe String. Essa classe pode ser utilizada de forma similar aos tipos de dados primitivos, mas os valores literais desse tipo são transcritos entre aspas e não entre apóstrofos.

• Há quatro tipos de dados primitivos para a representação de números inteiros, sendo que os mesmos diferem nas precisões e podem ser positivos ou negativos:


byte // 1 byte. De Memória Consumida
short // 2 bytes. De Memória Consumida
int // 4 bytes. De Memória Consumida
long // 8 bytes. De Memória Consumida
/*
Em java temos dois tipos primitivos para a representação de números fracionários, igual aos inteiros, porém, se diferenciam nas precisões, e podem ser positivos ou negativos. 
*/
float // 4 bytes. De Memória Consumida
double // 8 bytes. De Memória Consumida

APIs do Java

Existem milhares de classes disponíveis na API do Java e todas são tipos de dados, porém uma classe pode armazenar diversos dados ao mesmo tempo em seus atributos, e realizar tarefas através de seus métodos. Um tipo primitivo, por outro lado, só armazena um único dado e não contém quaisquer métodos para realizar tarefas.

Já para representar textos, o Java não possui um tipo primitivo, ele possui uma classe chamada String, que serve para esse propósito. Essa classe pode ser usada de modo semelhante a um tipo primitivo e ainda conta com diversos métodos disponíveis nessa classe para realizar diversas operações com o dado armazenado.

Classes

Também existem classes para representar cada um dos tipos de dados primitivos. Sempre que for preciso realizar uma operação mais complexa com algum dado, você poderá armazená-la em um objeto da classe correspondente ao invés de utilizar um tipo primitivo. Assim, poderá fazer uso dos métodos disponíveis nessa classe para realizar diversas operações com o dado armazenado.
Declarando e usando variáveis
Variáveis são espaços na memória onde podemos guardar informações. Em Java, toda variável tem um tipo que não pode ser mudado, uma vez que declarado:

tipoDaVariavel nomeDaVariavel;

Por exemplo, é possível ter uma variável chamada dinheiro que guarda um número inteiro:
int dinheiro;
Com isso, você declara a variável dinheiro, que passa a existir a partir daquela linha. Ela é do tipo int, que guarda um número inteiro. A partir daí, você pode usá-la, primeiramente atribuindo valores. Em Java, para atribuirmos um valor a uma variável utilizamos o comando “=” que é conhecido em java como comando de atribuição.
A linha a seguir é a tradução de: “dinheiro deve valer um milhão”.
Dinheiro = 1000000;

Comentários em Java

Você pode utilizar comentários em Java utilizando os símbolos de // para comentários de uma linha, e /* */ para múltiplas linhas.

// uma linha de comentário sobre a variável dinheiro
int dinheiro;

/* duas linhas de comentário sobre
 a variável dinheiro 
 */

int dinheiro;
Além de atribuir, você pode utilizar esse valor. O código a seguir declara novamente a variável dinheiro com valor 15000000 e imprime seu valor na saída padrão através da chamada a System.out.println.

// declara a variáveldinheiro
int dinheiro;
dinheiro = 15000000;

// imprime a variáveldinheiro
System.out.println(dinheiro);

Por fim, podemos utilizar o valor de uma variável para algum outro propósito, como alterar ou definir uma segunda variável. O código a seguir cria uma variável chamada maisDinheiro com valor de dinheiro mais um.

// calcula a variável dinheiro no próximo ano
int maisDinheiro;
maisDinheiro = dinheiro + 1;

No mesmo momento que você declara uma variável, também é possível inicializá-la por praticidade:
int dinheiro = 15000000;
Operadores Aritméticos
Você pode usar os operadores +, -, / e * para operar com números, sendo eles responsáveis pela adição, subtração, divisão e multiplicação, respectivamente. Além desses operadores básicos, há o operador % (módulo) que nada mais é que o resto de uma divisão inteira. Veja alguns exemplos:

int quatro = 2 + 2;
int tres = 5 - 2;

int oito = 4 * 2;
int dezesseis = 64 / 4;

int um = 5 % 2; // 5 dividido por 2 dá 2 e tem resto 1; 
// o operador % pega o resto da divisão inteira

Como rodar esses códigos?

Você deve colocar esses trechos de código dentro do bloco main. Por exemplo, para imprimir a variável dinheiro e a variável maisDinheiro podemos escrever o seguinte programa de exemplo:


class FicandoMilionario {
	public static void main(String[] args) {
		// imprime a variável dinheiro
		int dinheiro = 32000000;
		System.out.println(dinheiro);

		// gera o meu dinheiro para o próximo ano
		int maisDinheiro;
		maisDinheiro = dinheiro + 1;

		// imprime o dinheiro do próximo ano
		System.out.println(maisDinheiro);
	}
}

Representar números inteiros é fácil, mas como guardar valores reais, tais como frações de números inteiros e outros? Outro tipo de variável muito utilizado é o double, que armazena um número com ponto flutuante (e que também pode armazenar um número inteiro).
double pi = 3.14;

Constante em Java

No exemplo acima criamos uma variável do tipo double e atribuímos o valor de PI que é uma constante, mas afinal o que é uma constante em java? Constantes são o oposto das variáveis. A diferença está em não podermos atribuir um novo valor, pois ele recebe um valor final imutável. Isso ajuda na hora que temos que lembrar de algum número muito grande ou muito pequeno, ou até mesmo um valor que aparentemente não nos diz nada, mas que significa alguma coisa. Um exemplo bem simples seria 000000. Mas, o que é 000000? É difícil saber o que ele significa, mas é muito mais fácil entender que preto em Java é Color.BLACK. Ou seja BLACK é uma constante que guarda sempre o mesmo valor (000000).

Para criarmos uma constante em Java é muito simples. Primeiro nos atemos ao fato de que uma constante criada dentro de uma classe deve ser acessada por qualquer membro da classe, então, por definição, essa constante é também global ou estática (static). Como uma constante não muda seu valor, então, a marcamos com a palavra chave final, que fará com que o valor nunca seja modificado. Toda constante é um dado, portanto, o seu tipo de dado também é obrigatório declarar.

Declarando uma constante

Então, para declarar uma constante faríamos:
static final long CONST1 = 1L; ou final long CONST2 = 1L;
No qual, CONST1 seria uma constante global (ou seja, foi declarada no corpo da classe) e CONST2 seria uma constante local (ou seja, foi declarada no corpo de alguma função ou método, por exemplo, dentro de main)
Para ilustrar bem o uso de constantes, vamos calcular a área e o comprimento de um círculo. O porquê deste cálculo é que necessitaremos de um número constante chamado PI. PI é um número irracional, ou seja, não há uma representação exata dele, mas, para o nosso exemplo, usaremos ele com uma precisão de 8 casas decimais. Portanto, nosso pi será do tipo double que valerá 3,14159265. Então, perceba que é muito mais fácil se lembrar da palavra pi do que do número 3,14159265. Além de, obviamente, digitarmos bem menos.

Então, só para esclarecer o que irá acontecer: O cálculo da área do círculo equivale a raio² × pi, e o comprimento é medido em 2 × raio × pi, no qual o raio é a distância entre a borda do círculo e seu centro. Vamos usar um raio de 25cm. Vejamos o resultado.

public class Constantes {

static final float PI = 3.14159265f;

public static void main(String args[]) {
     float raio = 25f;
     float comprimento = raio * 2* PI;
     float area = (raio * raio) * PI;
     System.out.println("Dados de um círculo de "+ raio + "cm:\n"
     + "comprimento: "+ comprimento + "cm\n"
     + "Área: "+ area + "cm²");
   }
}

Tipo boolean

O tipo boolean armazena um valor verdadeiro ou falso, e só ( nada de números, palavras ou endereços, como em algumas outras linguagens.)
boolean verdade = true;
true e false são palavras reservadas do Java. É comum que um boolean seja determinado através de uma expressão booleana, isto é, um trecho de código que retorna um booleano, como o exemplo:
int idade = 30;
boolean menorDeIdade = idade < 18;
O tipo char guarda um, e apenas um, caractere. Esse caractere deve estar entre aspas simples. Não se esqueça dessas duas características de uma variável do tipo char! Por exemplo, ela não pode guardar um código como ” pois o vazio não é um caractere!
char letra = 'a';
System.out.println(letra);
Variáveis do tipo char são pouco usadas no dia a dia. Veremos mais a frente o uso das Strings, que usamos constantemente, porém estas não são definidas por um tipo primitivo.

Concatenação de string

A concatenação de strings é dada pelo operador +, mas não o confunda com o operador de adição que utiliza o mesmo símbolo.
Dessa forma, com apenas este símbolo, podemos unir duas cadeias de caracteres diferentes em apenas uma.
Abaixo temos um exemplo que, ilustra exatamente o que acontece na concatenação:
Tele + visão = Televisão; Passa + tempo = Passatempo.
Acredite, simples desse jeito.
Colocando isso em um código, ficaria:


public class ConcatenacaoSimples {
	public static void main(String[] args) {
		String palavra1 = "tele";
		String palavra2 = "fone";
		String palavra3 = "Passa";
		String palavra3 = "tempo";

		System.out.println(palavra1 + palavra2);
		System.out.println(palavra2 + palavra3);
	}
}

Concatenação composta:

Veja mais um exemplo, agora uma concatenação composta:


public class ConcatenacaoComposta {
    public static void main(String[] args) {
        String part1 = "So";
        String part2 = "l";
        String part3 = "u";
        String part4 = "ç";
        String part5 = "õ";
        String part6 = "e";
        String part7 = "s";
        System.out.println(part1+part2+part3+part4+part5+part6+part7);
    }
}

A concatenação de strings ajuda muito no momento que usamos o método de saída padrão println, porque ao invés de utilizarmos várias vezes o mesmo método, podemos apenas concatenar a string anterior com a string posterior, ou seja, juntar a string de cima com a string da linha de baixo. Veja o exemplo:


public class ConcatenacaoComPrintln {
	public static void main(String[] args) {
		System.out.println("ZT SOFTWARES!\n\n"+
		"Este é um exemplo prático de concatenação de string.\n"+
		"Aqui, a string da linha de cima é "+
		"sempre concatenada com a string da linha de baixo");
	}
}

Cuidados ao concatenar

Apesar da concatenação ser algo bem simples de ser feito, devemos ter alguns cuidados. Pois como podemos perceber, ela também é o símbolo utilizado para fazer operações de adição. O que queremos dizer é que, se, por exemplo, quisermos marcar um número de telefone em uma única String e tivermos na verdade dois números inteiros distintos, o resultado será desastroso. Veja:
Telefone: 99+ 36617761, resultaria em Telefone: 36617860. Acabamos de perder o número de telefone. Então, o mais sensato é lembrar que concatenação só ocorre entre uma string e outro dado (não necessariamente precisa ser uma string também).
Então, para conseguirmos juntar os dois números acima, pelo menos um deles deve ser uma string.
Telefone: “99”+ 36617761, ou Telefone: 99 + “36617761”.

Exercícios Resolvidos:

Tipos Primitivos, Variáveis, Operadores aritméticos, Comentários, Constantes e Concatenação em java
Na empresa onde trabalhamos, há tabelas com o quanto foi gasto em cada mês. Para fechar a Demonstração do Resultado do Exercio(DRE) do primeiro trimestre, precisamos somar o custo total. Sabendo que, em Janeiro, houve um custo 45000 reais, em Fevereiro, 73000 reais e em Março, 27000 reais, faça um programa que calcule e imprima o custo total no trimestre. Siga esses passos:

  1. Crie uma classe chamada DRE Trimestral com um bloco main, como nos exemplos anteriores;
  2. Dentro do main (o miolo do programa), declare uma variável inteira chamada custoJaneiro e inicialize-a com 45000;
  3. Crie também as variáveis custoFevereiro e custoMarco, inicializando-as com 73000 e 27000, respectivamente, utilize uma linha para cada declaração;
  4. Crie uma variável chamada custoTrimestre e inicialize-a com a soma das outras 3 variáveis:
    int custoTrimestre = custoJaneiro + custoFevereiro + custoMarco;
  5. Imprima a variável custoTrimestre.
  6. Adicione código (sem alterar as linhas que já existem) na classe anterior para imprimir a média mensal de custo, criando uma variável mediaMensal junto com uma mensagem. Para isso, concatene a String com o valor, usando “Valor da média mensal = ” + mediaMensal.