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

Objetivos da Seção

Por que Java?

Um primeiro programa: Hello, World!

/*
 * 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!");
  }
}
javac Hello.java
java Hello
Hello, world!

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

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

import p1.io.*;

public class MinMax1 {
  public static void main(String[] args) {
    int n1, n2, n3;
  
    n1 = Entrada.in.lerInt("Entre com o primeiro inteiro: ");
    n2 = Entrada.in.lerInt("Entre com o segundo inteiro: ");
    n3 = Entrada.in.lerInt("Entre com o terceiro inteiro: ");
    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 -classpath .;packagep1\p1.jar MinMax1.java
java -classpath .;packagep1\p1.jar 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 p1.io.*;
    n1 = Entrada.in.lerInt("Entre com o primeiro inteiro: ");
    int n1, n2, n3;
    int n1 = Entrada.in.lerInt("Entre com o primeiro inteiro: ");
        if(n2 < n3) {
          System.out.println("O menor numero eh: " + n2);
        } else {
          System.out.println("O menor numero eh: " + n3);
        }
/*
 * "Ler 3 números inteiros da entrada, imprimir o menor e o maior"
 *
 * Autor: Jacques Sauvé
 */

import p1.io.*;

public class MinMax2 {
  public static void main(String[] args) {
    int n1, n2, n3;
    int mínimo;
    int máximo;
  
    n1 = Entrada.in.lerInt("Entre com o primeiro inteiro: ");
    n2 = Entrada.in.lerInt("Entre com o segundo inteiro: ");
    n3 = Entrada.in.lerInt("Entre com o terceiro inteiro: ");
    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);
  }
}
/*
 * "Ler 3 números inteiros da entrada, imprimir o menor e o maior"
 *
 * Autor: Jacques Sauvé
 */

import p1.io.*;

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

    num = Entrada.in.lerInt("Entre com o primeiro inteiro: ");
    if(num < mínimo) {
        mínimo = num;
    }
    if(num > máximo) {
        máximo = num;
    }

    num = Entrada.in.lerInt("Entre com o segundo inteiro: ");
    if(num < mínimo) {
        mínimo = num;
    }
    if(num > máximo) {
        máximo = num;
    }

    num = Entrada.in.lerInt("Entre com o terceiro inteiro: ");
    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);
  }
}
/*
 * "Ler 3 números inteiros da entrada, imprimir o menor e o maior"
 *
 * Autor: Jacques Sauvé
 */

import p1.io.*;

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

    for(int i = 0; i < NÚMEROS_A_LER; i++) {
      int num = Entrada.in.lerInt("Entre com o proximo inteiro: ");
      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 = Entrada.in.lerInt("Entre com o proximo inteiro: ");

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

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

import p1.io.*;

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

    alvo = Entrada.in.lerdouble("Quanto dinheiro voce quer para se aposentar?");
    contribuição = Entrada.in.lerdouble("Quanto dinheiro voce vai contribuir todo ano?");
    juros = Entrada.in.lerdouble("Taxa de juros em % (exemplo: digite 7.5 para 7.5%): ") / 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

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

import p1.io.*;

public class Inverte {
  public static void main(String[] args) {
    final int NÚMEROS_A_LER = 10;
    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++) {
      números[i] = Entrada.in.lerInt("Entre com o proximo inteiro: ");
    }
    for(int i = números.length-1; i >= 0; i--) {
        System.out.println(números[i]);
    }
  }
}
/*
 * Ecoar argumentos de linha de comando
 *
 * Autor: Jacques Sauvé
 */

import p1.io.*;

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]);
    }
  }
}
/*
 * 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