Java/Criando e executando o primeiro programa
Para criar o primeiro programa é necessário um editor de texto simples, para a digitação do código-fonte, e o JDK instalado. O procedimento para instalação do JDK é explicado no capítulo anterior.
Etapas
[editar | editar código-fonte]Etapa 1
[editar | editar código-fonte]No editor de texto digite o código exibido abaixo.
public class Teste {
public static void main(String[] args) {
System.out.println("Alô mundo!");
}
}
Salve o arquivo com o nome Teste.java
.
Etapa 2
[editar | editar código-fonte]
Por meio do terminal entre no diretório onde está o arquivo Teste.java
e digite:
javac Teste.java
Etapa 3
[editar | editar código-fonte]E por fim, digite:
java Teste
Será exibido:
Alô mundo!
Explicações
[editar | editar código-fonte]Não se preocupe em decorar as informações desta seção pois elas serão revistas com maior profundidade nos capítulos correspondentes.
Etapa 1
[editar | editar código-fonte]Na 1.ª etapa foi digitado o código-fonte em Java. Código-fonte, à grosso modo, é um conjunto de instruções legíveis por humanos, definidas em uma linguagem de programação, para determinar o que o programa deverá realizar.
A primeira linha do código-fonte utiliza a palavra-chave class
para definir uma classe com o nome Teste. O modificador de acesso public
, que precede class
, não é obrigatório no código acima pois há apenas uma classe sendo definida. [1]
Palavras-chave são palavras que servem como instruções para a linguagem de programação. Essas palavras não devem ser utilizadas para definir identificadores (nomes) de classes e métodos.[2]
Classe é um recipiente de código. Seu corpo, também conhecido como bloco de instruções, é definido entre as chaves de abertura {
e fechamento }
. No código acima o corpo da classe Teste inicia na primeira linha e termina na última linha. Não definir uma classe com os delimitadores de bloco de instruções (colchetes) causa um erro de compilação.
Na segunda linha, temos o método public static void main(String[] args)
dentro do corpo da classe Teste.
Método, conhecido em outras linguagens de programação como função, é subconjunto de instruções que pode ser reutilizado. Assim como as classes, métodos também tem um corpo. Não definir um método com os delimitadores de bloco de instruções (colchetes) causa um erro de compilação.
Os modificadores de acesso public
e static
e o tipo de retorno void
do método main serão abordados no capítulo sobre métodos. Por ora, basta saber que eles são obrigatórios para a compilação do código-fonte. main é o nome do método e (String[] args)
define sua lista de parâmetros. [3]
O método main sempre será definido dessa forma para que haja a inicialização do programa. A esses códigos que sempre devem ser repetidos chamamos de código boilerplate.
Dentro do corpo do método main há a instrução System.out.println("Alô mundo!");
. O método println é executado através da referência out localizada na classe System. O método em questão recebe como argumento a String "Alô mundo!"
.
String é uma sequência de caracteres delimitada com um par aspas duplas "
.
Argumento é um valor enviado ao método.[4] É possível alterar o argumento no método print para qualquer outra String.
O código dentro da classe está espaçado em 4 colunas e dentro do método main em 8. A esse espaçamento damos o nome de indentação. A indentação não é obrigatória para o funcionamento do programa, mas é uma boa prática, pois aprimora a legibilidade do código. As instruções inseridas dentro de um bloco de instruções são espaçadas em relação ao próprio bloco. No caso de haver um bloco dentro de um bloco então as instruções dentro do bloco mais interno serão espaçados em 2 níveis. Neste livro é utilizado espaçamento de 4 colunas para cada nível, porém pode-se utilizar qualquer quantidade. É comum que ao invés de espaçamento sejam utilizadas tabulações para definir a indentação.
O nome do arquivo deve ser o mesmo da classe acompanhado da extensão .java
.[5] Java é case-sensitive o que significa que diferencia letras maiúsculas de minúsculas. Logo, alterar a caixa de algum caracter de Teste.java
resulta em erro.
- ↑ Os modificadores de acesso de classe serão vistos no capítulo Declaração de Classes.
- ↑ Regras adicionais no capítulo Identificadores.
- ↑ Também pode ser utilizado
String... args
.Mais sobre varargs no capítulo Métodos. - ↑ Também a construtores e anotações.
- ↑ Apenas no caso da classe ser precedida do modificador
public
. Mais informações no capítulo Declarações de Classes.
Etapa 2
[editar | editar código-fonte]No terminal é utilizado o comando javac Teste.java
para compilar as instruções do código-fonte Teste.java
em instruções de bytecode do arquivo Teste.class
.
javac é o compilador incluído no JDK. Com ele é possível compilar os códigos-fontes .java
em arquivos bytecode de extensão .class
. No exemplo, o javac após compilar Teste.java
produziu o bytecode Teste.class
.
bytecode é um arquivo que contém instruções interpretáveis pela JVM (máquina virtual Java). Um bytecode pode ser executado em qualquer Sistema Operacional que contenha uma JVM, o que significa que se um código-fonte é compilado pelo javac em um Windows, teoricamente esse bytecode resultante poderá ser executado pelo comando java em um Ubuntu.
Etapa 3
[editar | editar código-fonte]O bytecode é executado pela JVM ao comando java Teste
ser disparado.
O comando java
inicia a JVM, que por sua vez irá carregar o bytecode apontado no comando, no caso Teste, irá procurar pelo método main, e caso encontrado, a JVM irá executá-lo.
Ao utilizar o comando java deve-se digitar o bytecode sem a extensão .class
. Caso a extensão seja utilizada, o seguinte erro será reportado por java.
java Teste.class Erro: Não foi possível localizar nem carregar a classe principal Teste.class
Conveções utilizadas neste livro
[editar | editar código-fonte]- Os códigos-fonte e as saídas de texto (mensagens resultantes no terminal) serão dispostos em caixas cinzas como abaixo.
public class Teste {
public static void main(String[] args) {
System.out.println("Exiba isto.");
}
}
Exiba isto.
- As saídas de texto tanto podem conter resultados de métodos como
print
quando o programa é compilado e executado com sucesso (como ocorreu acima) quanto podem apresentar erros de compilação, rastreamento de pilha de exceções e erro na chamada de comandos da JDK tal comojava
.
Erro apontado na compilação.
Teste.java:1: error: class Test is public, should be declared in a file named Test.java public class Test {}
Rastreamento de pilha de exceção (do original em inglês: exception stack trace).
Exception in thread "main" java.lang.ArithmeticException: / by zero at Teste.main(Teste.java:3)
Erro na sintaxe de comando.
javac: invalid flag: Teste.class Usage: javac <options> <syntaxhighlight files> use -help for a list of possible options
- Exceto quando descrito o contrário, todos os códigos ao longo dos próximos capítulos foram escritos dentro do corpo do método main.
System.out.println(42);
42
- Os números iniciando cada linha do código-fonte servem apenas para ser referenciados no texto, não devendo ser digitados.
System.out.println(42);
- Os conceitos apresentados serão destacados em amarelo.
System.out.print("A resposta para a pergunta essencial é: ");
System.out.printf("%d\n", 42);
- Comentários contêm informações importantes sobre o código apresentado.
//Classe e método main omitidos.
System.out.print("A resposta para a pergunta essencial é: ");
- No texto, referências às palavras-chaves serão apresentadas em caixas cinzas em linha como em
class
. Os identificadores (nomes) de métodos, classes e similares estarão em negrito como em "método main".
Exercícios
[editar | editar código-fonte]