Introdução à Linguagem Java Através de Exemplos

Objetivos da Seção

Por que Java?

Um primeiro programa: Hello, World!

package p2.exemplos;

/*
 * O primeiro programa em Java: Hello World
 * Autor: Jacques Sauvé
 */

// Todo programa tem um ponto de entrada: o "método" main de alguma "classe"
public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, world!");
  }
}
package p2.exemplos;
javac Hello.java
java Hello
Hello, world!

Um segundo programa: entrada de dados, tipos básicos, variáveis, decisões simples

package p2.exemplos;

import java.util.Scanner;

/*
 * "Ler 3 números inteiros da entrada, imprimir o menor e o maior"
 *
 * Autor: Jacques Sauvé
 */

public class MinMax1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1, n2, n3;

        System.out.print("Entre com o primeiro inteiro: ");
        n1 = sc.nextInt();
        System.out.print("Entre com o segundo inteiro: ");
        n2 = sc.nextInt();
        System.out.print("Entre com o terceiro inteiro: ");
        n3 = sc.nextInt();
        if (n1 > n2) {
            if (n1 > n3) {
                if (n2 < n3) {
                    System.out.println("O menor numero eh: " + n2);
                } else {
                    System.out.println("O menor numero eh: " + n3);
                }
                System.out.println("O maior numero eh: " + n1);
            } else {
                if (n1 < n2) {
                    System.out.println("O menor numero eh: " + n1);
                } else {
                    System.out.println("O menor numero eh: " + n2);
                }
                System.out.println("O maior numero eh: " + n3);
            }
        } else {
            if (n2 > n3) {
                if (n1 < n3) {
                    System.out.println("O menor numero eh: " + n1);
                } else {
                    System.out.println("O menor numero eh: " + n3);
                }
                System.out.println("O maior numero eh: " + n2);
            } else {
                if (n1 < n2) {
                    System.out.println("O menor numero eh: " + n1);
                } else {
                    System.out.println("O menor numero eh: " + n2);
                }
                System.out.println("O maior numero eh: " + n3);
            }
        }
    }
}
javac MinMax1.java
java MinMax1
Entre com o primeiro inteiro: 3
Entre com o segundo inteiro: 9
Entre com o terceiro inteiro: 123
O menor numero eh: 3
O maior numero eh: 123
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
    int n1, n2, n3;
    n1 = sc.nextInt();
    int n1 = sc.nextInt();
        if(n2 < n3) {
          System.out.println("O menor numero eh: " + n2);
        } else {
          System.out.println("O menor numero eh: " + n3);
        }
package p2.exemplos;

import java.util.Scanner;

/*
 * "Ler 3 números inteiros da entrada, imprimir o menor e o maior"
 *
 * Autor: Jacques Sauvé
 */

public class MinMax2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1, n2, n3;

        System.out.print("Entre com o primeiro inteiro: ");
        n1 = sc.nextInt();
        System.out.print("Entre com o segundo inteiro: ");
        n2 = sc.nextInt();
        System.out.print("Entre com o terceiro inteiro: ");
        n3 = sc.nextInt();

        int mínimo;
        int máximo;
        if (n1 > n2) {
            if (n1 > n3) {
                if (n2 < n3) {
                    mínimo = n2;
                } else {
                    mínimo = n3;
                }
                máximo = n1;
            } else {
                if (n1 < n2) {
                    mínimo = n1;
                } else {
                    mínimo = n2;
                }
                máximo = n3;
            }
        } else {
            if (n2 > n3) {
                if (n1 < n3) {
                    mínimo = n1;
                } else {
                    mínimo = n3;
                }
                máximo = n2;
            } else {
                if (n1 < n2) {
                    mínimo = n1;
                } else {
                    mínimo = n3;
                }
                máximo = n3;
            }
        }
        System.out.println("O menor numero eh: " + mínimo);
        System.out.println("O maior numero eh: " + máximo);
    }
}
package p2.exemplos;

import java.util.Scanner;

/*
 * "Ler 3 números inteiros da entrada, imprimir o menor e o maior"
 *
 * Autor: Jacques Sauvé
 */

public class MinMax3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;
        int mínimo = Integer.MAX_VALUE;
        int máximo = Integer.MIN_VALUE;

        System.out.print("Entre com o primeiro inteiro: ");
        num = sc.nextInt();
        if (num < mínimo) {
            mínimo = num;
        }
        if (num > máximo) {
            máximo = num;
        }

        System.out.print("Entre com o segundo inteiro: ");
        num = sc.nextInt();
        if (num < mínimo) {
            mínimo = num;
        }
        if (num > máximo) {
            máximo = num;
        }

        System.out.print("Entre com o terceiro inteiro: ");
        num = sc.nextInt();
        if (num < mínimo) {
            mínimo = num;
        }
        if (num > máximo) {
            máximo = num;
        }

        System.out.println("O menor numero eh: " + mínimo);
        System.out.println("O maior numero eh: " + máximo);
    }
}
package p2.exemplos;

import java.util.Scanner;

/*
 * "Ler 3 números inteiros da entrada, imprimir o menor e o maior"
 *
 * Autor: Jacques Sauvé
 */

public class MinMax4 {
    public static void main(String[] args) {
        final int NÚMEROS_A_LER = 3;
        Scanner sc = new Scanner(System.in);
        int mínimo = Integer.MAX_VALUE;
        int máximo = Integer.MIN_VALUE;

        for (int i = 0; i < NÚMEROS_A_LER; i++) {
            System.out.print("Entre com o proximo inteiro: ");
            int num = sc.nextInt();
            if (num < mínimo) {
                mínimo = num;
            }
            if (num > máximo) {
                máximo = num;
            }
        }

        System.out.println("O menor numero eh: " + mínimo);
        System.out.println("O maior numero eh: " + máximo);
    }
}
    for(int i = 0; i < NÚMEROS_A_LER; i++) {
    i++
    i = i + 1
            int num = sc.nextInt();

Um terceiro programa: tipos primitivos, limites de representação, constantes, operadores e expressões

Tipos primitivos, limites de representação e constantes

Tipo primitivo Tamanho Mínimo Máximo Exemplos de Constantes
boolean 1 bit - - true, false
char 16 bits Unicode 0 Unicode 65.535 'a' (letra a)
byte 8 bits -128 +127 97, -23
0x65 (hexadecimal)
short 16 bits -215 (-32.768) +215-1(32.767) 17569, -21875
int 32 bits -231
(uns -2 bi)
+231-1
(uns 2 bi)
1876345240, -2000000000
long 64 bits -263
(uns -9 quintilhões)
+263-1
(uns 9 quintilhões)
123981723971982318273L,
-12381726387613678688L,
97L, -23L, 0L
(Observe o 'L' final)
float 32 bits aprox -1038
(6-7 dígitos significativos)
aprox +1038
(6-7 dígitos significativos)
-3.4F
45.78E+23F
(Observe o 'F' final)
double 64 bits aprox -10308
(15 dígitos significativos)
aprox +10308
(15 dígitos significativos)
-3.4
45.78E+23
void - - - indica ausência de tipo
(quando um "método" nada retorna)
  double x = 8.89;
  int n = (int)x; // n terá valor 8

Operadores

  soma += nota*peso; // equivalente a soma = soma + nota*peso
  númeroDeAlunos++; // equivalente a númeroDeAlunos = númeroDeAlunos + 1
  númeroDeAlunos--; // equivalente a númeroDeAlunos = númeroDeAlunos - 1
  if(númeroDeAlunos-- > 0) // equivalente a testar númeroDeAlunos e depois decrementar
  if(--númeroDeAlunos > 0) // equivalente a decrementar e depois testar númeroDeAlunos
  if(númeroDeAlunos > MAX_ALUNOS || númeroDeProfessores > MAX_PROFS) ...
  if(ano % 4 == 0 && ano % 100 != 0 || ano % 400 == 0) ... // ano bissexto
  // a linha seguinte
  média = númeroDeNotas == 0 ? 0.0 : soma/númeroDeNotas;
  // é equivalente às linhas seguintes
  if(númeroDeNotas == 0) {
    média = 0.0;
  } else {
    média = soma/númeroDeNotas;
  }
Operadores Precedência Associatividade
[] . () Mais alta dir.gif (503 bytes)
! ~ ++ -- + (unário) - (unário) (cast) new   esq.gif (933 bytes)
* / %   dir.gif (503 bytes)
+ -   dir.gif (503 bytes)
<< >> >>>   dir.gif (503 bytes)
< <= > >= instanceof   dir.gif (503 bytes)
== !=   dir.gif (503 bytes)
&   dir.gif (503 bytes)
^   dir.gif (503 bytes)
|   dir.gif (503 bytes)
&&   dir.gif (503 bytes)
||   dir.gif (503 bytes)
?:   dir.gif (503 bytes)
= += -= *= /= %= &= |= ^= <<= >>= >>>= Mais baixa esq.gif (933 bytes)
  // a linha seguinte
  if(númeroDeAlunos > MAX_ALUNOS || númeroDeProfessores > MAX_PROFS) ...
  // não precisa de parênteses, pois é equivalente a
  if((númeroDeAlunos > MAX_ALUNOS) || (númeroDeProfessores > MAX_PROFS)) ...

Um programa exemplo

package p2.exemplos;

import java.util.Scanner;

/*
 * Planejamento de aposentadoria
 *
 * Autor: Jacques Sauvé (roubado de CoreJava)
 */

public class Aposentadoria {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double alvo;
        double juros;
        double contribuição;
        int anos = 0;
        double saldo = 0;

        // exercicio: verifique valores informados abaixo são aceitáveis
        System.out.print("Quanto dinheiro voce quer para se aposentar? ");
        alvo = sc.nextDouble();
        System.out.print("Quanto dinheiro voce vai contribuir todo ano?");
        contribuição = sc.nextDouble();
        System.out
                .print("Taxa de juros em % (exemplo: digite 7.5 para 7.5%): ");
        juros = sc.nextDouble() / 100;

        while (saldo < alvo) {
            saldo = (saldo + contribuição) * (1 + juros);
            anos++;
        }

        System.out.println("Voce pode se aposentar em " + anos + " anos.");
    }
}

Um quarto programa: arrays

package p2.exemplos;

import java.util.Scanner;

/*
 * Ler 10 números inteiros da entrada, imprimir em ordem inversa
 *
 * Autor: Jacques Sauvé
 */

public class Inverte {
    public static void main(String[] args) {
        final int NÚMEROS_A_LER = 10;
        Scanner sc = new Scanner(System.in);
        int[] números = new int[NÚMEROS_A_LER]; // criação do array de 10
                                                // inteiros

        for (int i = 0; i < números.length; i++) {
            System.out.print("Entre com o proximo inteiro: ");
            números[i] = sc.nextInt();
        }
        for (int i = números.length - 1; i >= 0; i--) {
            System.out.println(números[i]);
        }
    }
}
package p2.exemplos;

/*
 * Ecoar argumentos de linha de comando
 *
 * Autor: Jacques Sauvé
 */

public class Eco {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.print(args[i] + " ");
        }
        System.out.println();
        for (int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}
package p2.exemplos;

/*
 * Imprime o dia da semana correspondendo ao argumento de linha de comando
 *
 * Autor: Jacques Sauvé
 */

public class Dia {
    public static void main(String[] args) {
        final int DIAS_NA_SEMANA = 7;
        final String[] diasDaSemana = { "", "Domingo", "Segunda", "Terca",
                "Quarta", "Quinta", "Sexta", "Sabado" };
        if (args.length != 1) {
            System.err.println("Sintaxe: Dia numero");
            System.exit(1);
        }
        int dia = Integer.parseInt(args[0]);
        if (dia < 1 || dia > DIAS_NA_SEMANA) {
            System.err.println("O dia da semana deve estar entre 1 e "
                    + DIAS_NA_SEMANA);
            System.exit(1);
        }
        System.out.println(diasDaSemana[dia]);
    }
}
    if(dia < 1 || dia > 7) {

intro-1 programa