Variáveis primitivas

Dentro de um bloco, podemos declarar variáveis e usá-las. Em Java, toda variável tem um tipo que não pode ser mudado, uma vez que declarado.

    tipoDaVariavel nomeDaVariavel;
    

Operadores matematicos básicos

Operação Operador Expressão algébrica Expressão Java
Adição + a + 1 a +1
Subtração - b -2 b -2
Multiplicação * c.m c * m
Divisão / d / e d / e
Resto % f mod g f % g

Precedencia dos operadores

Operador Operação Ordem de avaliação(precedência)
* / % Multiplicação Divisão Resto Avaliado primeiro. Se houver vários operadores desse tipo serão avaliados da esquerda para a direita
+ - Adição Subtração Avaliado em seguida. Se houver vários operadores desse tipo, serão avaliados da esquerda para a direita.
= Atribuição Avaliado por último

Entrada de Dados: Classe Scanner

No Java, a partir do Java 1.5 ou J2SE 5, que recebeu o codinome "Tiger", está disponível a classe Scanner do pacote java.util. Essa classe implementa as operações de entrada de dados pelo teclado no console.

Para utilizar a classe Scanner em uma aplicação Java deve-se proceder da seguinte maneira:
[ 1 ] importar o pacote java.util:
import java.util.Scanner;
[ 2 ] Instanciar e criar um objeto Scanner:
Scanner ler = new Scanner(System.in);
[ 3 ] Lendo valores através do teclado:
[ 3.1 ] Lendo um valor inteiro:
int n;

System.out.printf("Informe um número para a tabuada: ");
n = ler.nextInt();
[ 3.2 ] Lendo um valor real:
float preco;

System.out.printf("Informe o preço da mercadoria = R$ ");
preco = ler.nextFloat()
;
[ 3.3 ] Lendo um valor real:
double salario;

System.out.printf("Informe o salário do Funcionário = R$ ");
salario = ler.nextDouble();
[ 3.4 ] Lendo uma String, usado na leitura de palavras simples que não usam o caractere de espaço (ou barra de espaço):
String s;

System.out.printf("Informe uma palavra simples:\n");
s = ler.next();
[ 3.5 ] Lendo uma String, usado na leitura de palavras compostas, por exemplo, Pato Branco:
String s;

System.out.printf("Informe uma cadeia de caracteres:\n");
s = ler.nextLine();
[ 3.6 ] Na leitura consecutiva de valores numéricos e String deve-se esvaziar o buffer do teclado antes da leitura do valor String, por exemplo:
int n;
String s;

System.out.printf("Informe um Número Inteiro: ");
n = ler.nextInt();

ler.nextLine(); // esvazia o buffer do teclado

System.out.printf("Informe uma cadeia de caracteres:\n");
s = ler.nextLine();
[ 3.7 ] Lendo um caractere usando o método read() do pacote de classes System.in:
public static void main(String args[]) throws Exception {
    char c;

    System.out.printf("Informe um Caractere: ");
    c = (char)System.in.read();
}

Casting e promoção

Alguns valores são incompativeis se você tentar fazer uma atribuição direta.

double d = 3.14;
int a = d; // Erro - não compila.
double d = 5; // o double pode conter um número inteiro.
int a = d; // Erro - não compila.

Já o código abaixo funciona sem problemas.Um double pode guardar um número inteiro.

int i = 5;
double d = i;

Se precisarmos que um número real seja truncado e armazenado em uma variável inteira. Esse proesso recebe o nome de casting

double d = 3.14;
int i = (int) d;

Castings - observações importantes

Em java os valores ponto flutuante são considerados double, e um float não pode receber um double sem predas de informação.

    float x = 0.5; // Erro.
    float x = 0.5f; // Certo.
    
    double d = 0.5;
    float f = 0.3f;
    float x = f + (float) d; // Certo.
    

O único tipo primitivo que não pode ser atribuído a nenhum outro tipo é o boolean.

Na tabela abaixo é mostrado os casts do Java. A indicação Impl. quer dizer que aquele cast é implícito e automático.

Tipos e utilização

Tipo Utilização
booleanManipulação de valores booleanos true ou false
byte Manipulação de valores reais muitos pequenos e de dados em arquivos.
short Manipulação de valores pequenos.
char Manipulação de caracteres.
int Manipulação de valores inteiros.
long Manipulação de dados para os quais a faixa do int não seja suficiente.
float Manipulação de números reais de precisão simples.
double Manipulação de valores de precisão dupla.

Tamanho dos tipos.


Faixa de valores

Nesta tabela é mostrado a faixa de valores que suportam os tipos das variáveis primitivas.

booleanfalsetrue
byte -128 127
short -32768 32767
char 0 65535
int -4294967296 4294967295
long -1.84467E+19 1.84467E+19
* float varia varia
* double varia varia
* Varia conforme versão do processador e sistema operacional 32 ou 64 bits.

O IF e o ELSE

A sintaxe do Java para o if é:

    if(condiçãoBooleana){
       código;
    }
    

Uma condição booleana é qualquer coisa que retorne true ou false. Para isso você pode usar operadores <,>,<=,>= e outros.

    int diaMes = 40;
    if(diaMes > 31){
       System.out.println("Dia inválido !");
    }
    

Você pode utilizar a clausula else para indicar o comportamento que deve ser executado no caso da expressão booleana ser falsa.

    int diaMes = 40;
    if(diaMes > 31){
       System.out.println("Dia inválido !");
    } else {
       System.out.println("Dia válido");
    }
    
    

Você pode concatenar expressões booleanas através de operadores lógicos "E" e "OU". O "E" é representado pelo && e o "OU" é representado pelo ||.

    int idade = 15;
    boolean amigoDoDono = true;
    if(idade < 18 && amigoDoDono == false){
    System.out.println("Não pode entrar");
    } else  {
       System.out.println("Pode entrar");
    }
    
    

O While

O while é um comando utilizado para repetir um trecho de código algumas vezes. Um determinado trecho de código é repetido enquanto uma determinada condição permanecer verdadeira.

    while(condição){
       código;
    }
    
    

Exemplo:

    int dia = 1;
    while(dia < 31){
       System.out.println(dia);
       dia++;
    }

O trecho dentro do bloco será executado até o momento que a condição dia < 31 passe a ser falsa. O while acima imprime de 1 a 30

O For

A ideia do for é a mesma do while, fazer um trecho de código ser repetido enquanto uma condição continuar verdadeira. O for isola um espaço para a inicialização de variáveis e o modificados dessas variáveis.

        for(inicialização;condição;incremento){
           código;
        }
         

Exemplo:

        for(int dia =1;dia<31;dia++){
           System.out.println(dia);
        }
        
        

Controlando Loops

Apesar de termos condições booleanas, nossos laços podem decidir parar o loop por algum motivo especial sem que o resto seja executado.

    for(int i = x; i < y; i++){
    if(i%5 == 0){
       System.out.println("Achei um numero divisivel por 5 ente "+x+" e "+y);
       break;
    }
    }
    

O código acima vai percorrer os números de x a y e parar quando encontrar um númeor divisivel por 5, uma vez que foi utilizado a palavra chave break.

No código mostrado abaixo, obrigamos o loop a executar o proximo laço, sem antes terminar o laço atual.

    for(int i = 0; i <10; i++ ){
       if(i>4 && i<7) 
          continue;
       System.out.println(i);
    }
    

No exemplo acima será impresso os números 0,1,2,3,4,7,8,9.

Escopo das variáveis

Podemos declarar variáveis a qualquer momento no Java. Porém, dependendo de onde você as declarou, ela vai valer de um deerminado ponto a outro.

// Aqui avariável x não existia
int x = 10;  // A partir daqui ela existe

O escopo da variável é o nome dado ao trecho de código em que aquela variável existe e onde é possivel acessá-la.

Quando abrimos um novo bloco com as chaves, as variáveis declaradas ali dentro só valem até o fim daquele bloco.

Exemplo com erro

if(condição) {
   int i = 5;
}
else {
   int i = 10;
}
System.out.println(i); // Erro - o i não está declarado neste escopo

Exemplo correto

{
int i;
if(condição){
   i = 5;
}
else {
   i = 10;
}
System.out.println(i);
}

Atividades complementares

Vetor (Array)

Conjunto de elementos do mesmo tipo.

Declaração do vetor(Array)

Arrays não podem mudar de tamanho. A partir do momento que um array foi criado, ele não pode mudar de tamanho.

Percorrendo um array

public static void main(String args[]) {
        int[] idades = new int[10];
        for (int i = 0; i < 10; i++) 
            idades[i] = i * 10;
        for (int i = 0; i < 10; i++) {
            System.out.println(idades[i]);
        
}

Podemos imprimir conforme mostrado abaixo.

for(int x:idades)
system.out.println(x);