Logo Passei Direto
Buscar

Ferramentas de estudo

Questões resolvidas

1. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/SUPORTE E INFRAESTRUTURA) Considere a compilação de um ou mais programas por meio da linha de comando, num ambiente Java. Nesse caso, o comando que está corretamente formado para esse fim é:
a. compile teste.java –type java
b. java teste.java
c. javac *.java
d. jvm Teste1.java teste2.java
e. parse java teste.java

a. compile teste.java –type java
b. java teste.java
c. javac *.java
d. jvm Teste1.java teste2.java
e. parse java teste.java

2. (FGV/2013/TJ/AM/ASSISTENTE JUDICIÁRIO/PROGRAMADOR) Observe a figura a seguir, que representa o ambiente Java.
O arquivo.class não contém código que é nativo para seu processador, mas sim a linguagem de máquina da Java Virtual Machine (Java VM), conhecida por
a. framecode.
b. bytecode.
c. bitcode.
d. zipcode.
e. microcode.

a. framecode.
b. bytecode.
c. bitcode.
d. zipcode.
e. microcode.

5. (FGV/2010/FIOCRUZ/TECNOLOGISTA EM SAÚDE/ENGENHARIA DE PRODUÇÃO) Selecione a opção correspondente a uma linguagem de programação multiplataforma:
a. C#
b. Delphi
c. Fox Pro
d. Java
e. Visual Basic

Nesse processo, PRODUTO representa o seguinte componente:

a. Bytecode.
b. Framework.
c. Firmware.
d. Framecode.
e. Bytework.

A execução desse código provoca:

a. a exibição dos números 012.
b. a exibição dos números 0122.
c. a exibição dos números 0123.
d. erro em tempo de compilação.
e. erro em tempo de execução.

Na linguagem Java, o item que NÃO é parte dos tipos de dados (data types) primitivos é:
a. boolean.
b. decimal.
c. double.
d. long.
e. short.

São tipos primitivos na linguagem de programação Java:
a. int, float, double, char, boolean.
b. int, double, string, char, boolean.
c. integer, real, byte, char, boolean.
d. byte, word, short, integer, char.
e. int, real, char, string, boolean.

():
• é um método público;
• retorna um valor float; e
• possui dois parâmetros formais do tipo int: quantMassa e minutos.
Esse método retorna o resultado da divisão da quantMassa dividido pelo resultado da multiplicação do atributo constReagente pelo parâmetro minutos.
Como a operação de multiplicação está entre parênteses, então ela tem de ser aplicada primeiro, e depois se executa a operação de divisão.
Dentro do método main(), há a impressão no console do usuário (System.out.println()) do resultado retornado pelo método quantReagente() passando os parâmetro reais 15 e 2.
Ao ser chamado com esses valores de parâmetros reais, o método quantReagente() vai retornar o valor 1.0:
• quantMassa recebe o valor 15;
• minutos recebe o valor 2;
• constReagente, como vimos, foi inicializado com o valor 5;
• A operação de multiplicação (constReagente * minutos) retorna o valor 10;
• A operação de divisão (quantMassa / 10) retorna o valor 1;
- 15 / 10 = 1, pois é uma operação de divisão de inteiros.
• O método retorna o valor 1.0.
- Como o método retorna um valor do tipo float, o resultado da operação de divisão de inteiros será convertido automaticamente para float (1.0).
Portanto, a letra “c” é o gabarito.

O operador instanceof em Java:

I – aplica-se a operandos que sejam referências para objetos;
II – aplica-se a qualquer tipo de operando;
III – produz resultado do tipo boolean.

Está correto o que se afirma em:
I – aplica-se a operandos que sejam referências para objetos.
II – aplica-se a qualquer tipo de operando.
III – produz resultado do tipo boolean.
a. somente I e II.
b. somente I e III.
c. somente II e III.
d. somente III.
e. I, II e III.

Com relação aos operadores bitwise do Java, considere os valores binários
a = 00111100
b = 00001101
Os valores resultantes das operações a&b e a|b são, respectivamente:

a. 00011100 e 11111101
b. 00001100 e 00111101
c. 00001111 e 00111111
d. 11001110 e 00001100
e. 01101100 e 00100101

14. (FGV/2017/ALERJ/ESPECIALISTA LEGISLATIVO/TECNOLOGIA DA INFORMAÇÃO) Operadores bit-a-bit permitem a avaliação e a modificação de bits específicos em determinados tipos de dados na linguagem Java. Das expressões a seguir, a que resulta em um valor positivo para variável x é:
a. long x = -1; x = x >>> 64.
b. int x = -1; x = x >>> 32.
c. int x = -1; x = x >>> 16.
d. long x = -1; x = x >> 32.
e. int x = -1; x = x >> 32.

a. long x = -1; x = x >>> 64.
b. int x = -1; x = x >>> 32.
c. int x = -1; x = x >>> 16.
d. long x = -1; x = x >> 32.
e. int x = -1; x = x >> 32.

Analise o trecho de código Java mostrado a seguir.

Assinale a opção que indica o resultado quando aNumber for igual a 3.

a. “primeira string”
b. “segunda string”
c. “terceira string”
d. “primeira string”
“terceira string”
e. “segunda string”
“terceira string”

Analise o trecho de código Java mostrado a seguir.

A execução do código acima produzirá

a. a linha “Caso default”.
b. a linha “Segundo caso”.
c. as linhas “Segundo caso” e “Caso default”.
d. um erro de execução.
e. um erro de compilação.

17. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/DESENVOLVIMENTO DE SISTEMAS) O programa Java produz o número:
A classe enigma é uma classe executável por ter o método main().
No método main() da classe enigma, temos duas variáveis locais do tipo int: m e n.
Dentro da estrutura do-while, a variável m recebe o valor já incrementado dela mesma. Depois a variável n é decrementada.
Após a finalização da estrutura do-while, há a impressão do valor da variável m: 2, o que faz o gabarito da questão ser a letra “c”.
a. 0;
b. 1;
c. 2;
d. 3;
e. 4.

error: variable j might not have been initialized

System.out.println(“j: “ + j + “i: “ + i);

A classe Main é uma classe executável por ter o método main().
No método main() da classe Main, temos uma variável local do tipo int: j, mas ela não foi
inicializada. Não é necessário inicializar uma variável local no momento de sua declaração,
mas, antes que ela seja utilizada, deve-se inicializá-la, se não, o compilador irá mostrar um
erro quando a variável local for usada sem sua inicialização.
Temos a estrutura de repetição for no método main(), com a variável i do tipo int que recebe o
valor 0 na expressão de inicialização. Depois é aplicada a expressão de condição: enquanto
o valor da variável i for menor que 14, execute as instruções dentro do bloco da estrutura.
Após a expressão de condição da declaração for, temos uma estrutura de condição if: se
i for menor 10, então faça a variável j receber a soma do valor 2 mais o valor da variável i.
Após a estrutura de condição, há a impressão do valor da variável j concatenado com o
valor da variável i, porém aqui haverá um erro de compilação: como a variável j não foi
inicializada fora da estrutura de condição e a variável j só recebe um valor dentro dessa
estrutura, não há garantia de que a variável j terá algum valor, o que vai gerar um erro na
linha de impressão dessa variável local.
Diante dessa explicação, vamos entender o texto de cada alternativa da questão:

• “a”: A sintaxe do comando if (linha 5) está incorreta.
– ERRADO. Não há erro algum na declaração if.

• “b”: Não é permitido declarar a variável inteira i dentro da declaração do laço for (linha 4).
– ERRADO. A variável local i pode ser declarada tanto fora da estrutura for quanto
nessa estrutura (como está no código da questão).

• “c”: A variável inteira j não foi inicializada.
– CERTO. Como foi explicado.

• “d”: Não é possível imprimir valores inteiros sem antes convertê-los para Strings
(linha 8).

• “e”: A classe Main e o método main não podem ter o mesmo nome (linhas 1 e 2).

– ERRADO. Podem sim.

Então a letra “c” é o nosso gabarito.
Apenas como forma de correção, podemos fazer a variável j ser inicializada com o valor 0
em sua declaração. Com isso, corrigimos o erro e há a execução correta do código.
public class Main {
public static void main(String[] args) {
int j = 0;
for (int i = 0; i < 14; i++) {
if (i < 10) {
j = 2 + i;

}
System.out.println(“j: “ + j + “ i: “ + i);

}
}
}

Resultado da execução do código:
j: 2 i: 0

j: 3 i: 1

j: 4 i: 2

j: 5 i: 3

j: 6 i: 4

j: 7 i: 5

j: 8 i: 6

j: 9 i: 7

j: 10 i: 8

j: 11 i: 9

j: 11 i: 10

j: 11 i: 11

j: 11 i: 12

j: 11 i: 13

www.grancursosonline.com.br

83

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br


19. (FGV/2010/DETRAN/RN/PROGRAMADOR DE COMPUTADOR) Assinale a alternativa
que contém o resultado correto da execução do programa em linguagem Java:

Assinale a alternativa que contém o resultado correto da execução do programa em
linguagem Java:
a. 108
b. 90
c. 130
d. 100
e. 110

COMENTÁRIO

Organizando o código da questão, temos:
public class Soma {
public static void main(String[] args) {
int total = 0;
for (int conta = 2; conta <= 20; conta += 2)
total += conta;
System.out.printf(“Resultado %d
”, total);
}
}

Resultado da execução do código:
110

A classe Soma é uma classe executável por ter o método main().
No método main() da classe Main, temos uma variável local total do tipo int e ela foi inicia-
lizada com o valor 0.

www.grancursosonline.com.br

85

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br

Temos a estrutura de repetição for no método main(), com a variável conta do tipo int que
recebe o valor 2 na expressão de inicialização. Depois é aplicada a expressão de condição:
enquanto o valor da variável conta for menor que ou igual a 20, execute a instrução dentro
do bloco da estrutura.
Após a expressão de condição da declaração for, temos o incremento da variável total: ela
vai receber a soma do seu valor atual mais o valor da variável conta. Após essa instrução
(a única da declaração for), haverá a expressão de incremento, em que a variável conta é
incrementada recebendo a soma do seu valor atual mais 2.
A variável total vai ser atualizada enquanto o valor da variável conta for menor que ou
igual a 20.
No final, a variável total terminará com o valor 110. Veja o nosso teste chinês:

Total Conta

0 2

2 4

6 6

12 8

20 10

30 12

42 14

56 16

72 18

90 20

110 22

Com isso, a letra “e” é o gabarito da questão.

www.grancursosonline.com.br

86

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br

5.4. Instruções que quebram o controle de fluxo

5.4.1. break

A instrução break termina as declarações mais internas das quais o break faz parte:
• switch;
• while;
• do-while; e
• for.

Exemplo:
for (int x = 1; x < 11; x++) {

if (x == 4)

break;

System.out.print(x + “, “);

}

Resultado da execução do código:
1, 2, 3,

No exemplo acima, temos a estrutura de repetição for, com a variável x do tipo int que recebe
o valor 1 na expressão de inicialização. Depois é a aplicada a expressão de condição: enquanto
o valor da variável x for menor que 11, execute as instruções dentro do bloco da estrutura.

Após a expressão de condição, há uma estrutura de condição if com a condição: se o
valor da variável x for igual a 4, então break. Se a condição for falsa, então a estrutura é
pulada e é impresso o valor da variável x concatenado com uma vírgula. No final do corpo da
declaração for, a variável x é incrementada na expressão de incremento. Após isso, a expres-
ção de condição é feita novamente.

Perceba que foram impressos apenas três valores da variável x: 1, 2 e 3. Isso aconteceu
porque quando a variável x assumiu o valor 4, a condição da estrutura de condição if foi satis-
feita e chegou ao break, o que forçou o término da declaração for.

www.grancursosonline.com.br

87

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br

DIRETO DO CONCURSO

20. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/DESENVOL-
VIMENTO DE SISTEMAS) Analise o código Java a seguir.

A execução desse código produz:
a. os vinte primeiros números primos.
b. os números primos menores que vinte.
c. os vinte primeiros números não primos.
d. os números não primos menores que vinte.
e. os números 2, 4, 7, 11, 16.

COMENTÁRIO

Organizando o código da questão, temos:
public class Enigma1 {
public static void main(String[] args) {
int num = 20, conta;
for (int i = 2; i <= num; i++) {
conta = 0;
for (int j = 2; j <= i / 2; j++) {
if (i % j == 0) {
conta ++;
break;
}

www.grancursosonline.com.br

88

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br

}
if (conta == 0) {
System.out.println(i);
}
}
}
}
Resultado da execução do código:
2

3

5

7

11

13

17

19

A classe Enigma1 é uma classe executável por ter o método main().
Verificando o resultado da execução do código, podemos concluir que são números primos
menores que 20, o que faz a letra “b” ser o gabarito.
Esse código é bem trabalhoso e com muitos detalhes. Temos, por exemplo, uma declara-
ção for dentro de outra.
No método main() da classe Enigma1, temos duas variáveis locais do tipo int: num e conta.
A variável num é inicializada com o valor 20 e a variável conta não foi inicializada.
Temos a primeira estrutura de

Analise o código Java apresentado e assinale a opção que apresenta o resultado completo produzido pela execução desse código.

a. 2, 3, 5, 2, 3, 4, 5
b. 2, 3, 1
c. 2, 3
d. 2, 3, 2, 3, 4, 5
e. 2, 3, 5, 1

O que a instrução break faz?

a) Termina as declarações mais internas das quais o break faz parte.
b) Salta uma iteração das declarações mais internas das quais o break faz parte.
c) Faz a execução sair do método atual.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

1. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/SUPORTE E INFRAESTRUTURA) Considere a compilação de um ou mais programas por meio da linha de comando, num ambiente Java. Nesse caso, o comando que está corretamente formado para esse fim é:
a. compile teste.java –type java
b. java teste.java
c. javac *.java
d. jvm Teste1.java teste2.java
e. parse java teste.java

a. compile teste.java –type java
b. java teste.java
c. javac *.java
d. jvm Teste1.java teste2.java
e. parse java teste.java

2. (FGV/2013/TJ/AM/ASSISTENTE JUDICIÁRIO/PROGRAMADOR) Observe a figura a seguir, que representa o ambiente Java.
O arquivo.class não contém código que é nativo para seu processador, mas sim a linguagem de máquina da Java Virtual Machine (Java VM), conhecida por
a. framecode.
b. bytecode.
c. bitcode.
d. zipcode.
e. microcode.

a. framecode.
b. bytecode.
c. bitcode.
d. zipcode.
e. microcode.

5. (FGV/2010/FIOCRUZ/TECNOLOGISTA EM SAÚDE/ENGENHARIA DE PRODUÇÃO) Selecione a opção correspondente a uma linguagem de programação multiplataforma:
a. C#
b. Delphi
c. Fox Pro
d. Java
e. Visual Basic

Nesse processo, PRODUTO representa o seguinte componente:

a. Bytecode.
b. Framework.
c. Firmware.
d. Framecode.
e. Bytework.

A execução desse código provoca:

a. a exibição dos números 012.
b. a exibição dos números 0122.
c. a exibição dos números 0123.
d. erro em tempo de compilação.
e. erro em tempo de execução.

Na linguagem Java, o item que NÃO é parte dos tipos de dados (data types) primitivos é:
a. boolean.
b. decimal.
c. double.
d. long.
e. short.

São tipos primitivos na linguagem de programação Java:
a. int, float, double, char, boolean.
b. int, double, string, char, boolean.
c. integer, real, byte, char, boolean.
d. byte, word, short, integer, char.
e. int, real, char, string, boolean.

():
• é um método público;
• retorna um valor float; e
• possui dois parâmetros formais do tipo int: quantMassa e minutos.
Esse método retorna o resultado da divisão da quantMassa dividido pelo resultado da multiplicação do atributo constReagente pelo parâmetro minutos.
Como a operação de multiplicação está entre parênteses, então ela tem de ser aplicada primeiro, e depois se executa a operação de divisão.
Dentro do método main(), há a impressão no console do usuário (System.out.println()) do resultado retornado pelo método quantReagente() passando os parâmetro reais 15 e 2.
Ao ser chamado com esses valores de parâmetros reais, o método quantReagente() vai retornar o valor 1.0:
• quantMassa recebe o valor 15;
• minutos recebe o valor 2;
• constReagente, como vimos, foi inicializado com o valor 5;
• A operação de multiplicação (constReagente * minutos) retorna o valor 10;
• A operação de divisão (quantMassa / 10) retorna o valor 1;
- 15 / 10 = 1, pois é uma operação de divisão de inteiros.
• O método retorna o valor 1.0.
- Como o método retorna um valor do tipo float, o resultado da operação de divisão de inteiros será convertido automaticamente para float (1.0).
Portanto, a letra “c” é o gabarito.

O operador instanceof em Java:

I – aplica-se a operandos que sejam referências para objetos;
II – aplica-se a qualquer tipo de operando;
III – produz resultado do tipo boolean.

Está correto o que se afirma em:
I – aplica-se a operandos que sejam referências para objetos.
II – aplica-se a qualquer tipo de operando.
III – produz resultado do tipo boolean.
a. somente I e II.
b. somente I e III.
c. somente II e III.
d. somente III.
e. I, II e III.

Com relação aos operadores bitwise do Java, considere os valores binários
a = 00111100
b = 00001101
Os valores resultantes das operações a&b e a|b são, respectivamente:

a. 00011100 e 11111101
b. 00001100 e 00111101
c. 00001111 e 00111111
d. 11001110 e 00001100
e. 01101100 e 00100101

14. (FGV/2017/ALERJ/ESPECIALISTA LEGISLATIVO/TECNOLOGIA DA INFORMAÇÃO) Operadores bit-a-bit permitem a avaliação e a modificação de bits específicos em determinados tipos de dados na linguagem Java. Das expressões a seguir, a que resulta em um valor positivo para variável x é:
a. long x = -1; x = x >>> 64.
b. int x = -1; x = x >>> 32.
c. int x = -1; x = x >>> 16.
d. long x = -1; x = x >> 32.
e. int x = -1; x = x >> 32.

a. long x = -1; x = x >>> 64.
b. int x = -1; x = x >>> 32.
c. int x = -1; x = x >>> 16.
d. long x = -1; x = x >> 32.
e. int x = -1; x = x >> 32.

Analise o trecho de código Java mostrado a seguir.

Assinale a opção que indica o resultado quando aNumber for igual a 3.

a. “primeira string”
b. “segunda string”
c. “terceira string”
d. “primeira string”
“terceira string”
e. “segunda string”
“terceira string”

Analise o trecho de código Java mostrado a seguir.

A execução do código acima produzirá

a. a linha “Caso default”.
b. a linha “Segundo caso”.
c. as linhas “Segundo caso” e “Caso default”.
d. um erro de execução.
e. um erro de compilação.

17. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/DESENVOLVIMENTO DE SISTEMAS) O programa Java produz o número:
A classe enigma é uma classe executável por ter o método main().
No método main() da classe enigma, temos duas variáveis locais do tipo int: m e n.
Dentro da estrutura do-while, a variável m recebe o valor já incrementado dela mesma. Depois a variável n é decrementada.
Após a finalização da estrutura do-while, há a impressão do valor da variável m: 2, o que faz o gabarito da questão ser a letra “c”.
a. 0;
b. 1;
c. 2;
d. 3;
e. 4.

error: variable j might not have been initialized

System.out.println(“j: “ + j + “i: “ + i);

A classe Main é uma classe executável por ter o método main().
No método main() da classe Main, temos uma variável local do tipo int: j, mas ela não foi
inicializada. Não é necessário inicializar uma variável local no momento de sua declaração,
mas, antes que ela seja utilizada, deve-se inicializá-la, se não, o compilador irá mostrar um
erro quando a variável local for usada sem sua inicialização.
Temos a estrutura de repetição for no método main(), com a variável i do tipo int que recebe o
valor 0 na expressão de inicialização. Depois é aplicada a expressão de condição: enquanto
o valor da variável i for menor que 14, execute as instruções dentro do bloco da estrutura.
Após a expressão de condição da declaração for, temos uma estrutura de condição if: se
i for menor 10, então faça a variável j receber a soma do valor 2 mais o valor da variável i.
Após a estrutura de condição, há a impressão do valor da variável j concatenado com o
valor da variável i, porém aqui haverá um erro de compilação: como a variável j não foi
inicializada fora da estrutura de condição e a variável j só recebe um valor dentro dessa
estrutura, não há garantia de que a variável j terá algum valor, o que vai gerar um erro na
linha de impressão dessa variável local.
Diante dessa explicação, vamos entender o texto de cada alternativa da questão:

• “a”: A sintaxe do comando if (linha 5) está incorreta.
– ERRADO. Não há erro algum na declaração if.

• “b”: Não é permitido declarar a variável inteira i dentro da declaração do laço for (linha 4).
– ERRADO. A variável local i pode ser declarada tanto fora da estrutura for quanto
nessa estrutura (como está no código da questão).

• “c”: A variável inteira j não foi inicializada.
– CERTO. Como foi explicado.

• “d”: Não é possível imprimir valores inteiros sem antes convertê-los para Strings
(linha 8).

• “e”: A classe Main e o método main não podem ter o mesmo nome (linhas 1 e 2).

– ERRADO. Podem sim.

Então a letra “c” é o nosso gabarito.
Apenas como forma de correção, podemos fazer a variável j ser inicializada com o valor 0
em sua declaração. Com isso, corrigimos o erro e há a execução correta do código.
public class Main {
public static void main(String[] args) {
int j = 0;
for (int i = 0; i < 14; i++) {
if (i < 10) {
j = 2 + i;

}
System.out.println(“j: “ + j + “ i: “ + i);

}
}
}

Resultado da execução do código:
j: 2 i: 0

j: 3 i: 1

j: 4 i: 2

j: 5 i: 3

j: 6 i: 4

j: 7 i: 5

j: 8 i: 6

j: 9 i: 7

j: 10 i: 8

j: 11 i: 9

j: 11 i: 10

j: 11 i: 11

j: 11 i: 12

j: 11 i: 13

www.grancursosonline.com.br

83

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br


19. (FGV/2010/DETRAN/RN/PROGRAMADOR DE COMPUTADOR) Assinale a alternativa
que contém o resultado correto da execução do programa em linguagem Java:

Assinale a alternativa que contém o resultado correto da execução do programa em
linguagem Java:
a. 108
b. 90
c. 130
d. 100
e. 110

COMENTÁRIO

Organizando o código da questão, temos:
public class Soma {
public static void main(String[] args) {
int total = 0;
for (int conta = 2; conta <= 20; conta += 2)
total += conta;
System.out.printf(“Resultado %d
”, total);
}
}

Resultado da execução do código:
110

A classe Soma é uma classe executável por ter o método main().
No método main() da classe Main, temos uma variável local total do tipo int e ela foi inicia-
lizada com o valor 0.

www.grancursosonline.com.br

85

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br

Temos a estrutura de repetição for no método main(), com a variável conta do tipo int que
recebe o valor 2 na expressão de inicialização. Depois é aplicada a expressão de condição:
enquanto o valor da variável conta for menor que ou igual a 20, execute a instrução dentro
do bloco da estrutura.
Após a expressão de condição da declaração for, temos o incremento da variável total: ela
vai receber a soma do seu valor atual mais o valor da variável conta. Após essa instrução
(a única da declaração for), haverá a expressão de incremento, em que a variável conta é
incrementada recebendo a soma do seu valor atual mais 2.
A variável total vai ser atualizada enquanto o valor da variável conta for menor que ou
igual a 20.
No final, a variável total terminará com o valor 110. Veja o nosso teste chinês:

Total Conta

0 2

2 4

6 6

12 8

20 10

30 12

42 14

56 16

72 18

90 20

110 22

Com isso, a letra “e” é o gabarito da questão.

www.grancursosonline.com.br

86

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br

5.4. Instruções que quebram o controle de fluxo

5.4.1. break

A instrução break termina as declarações mais internas das quais o break faz parte:
• switch;
• while;
• do-while; e
• for.

Exemplo:
for (int x = 1; x < 11; x++) {

if (x == 4)

break;

System.out.print(x + “, “);

}

Resultado da execução do código:
1, 2, 3,

No exemplo acima, temos a estrutura de repetição for, com a variável x do tipo int que recebe
o valor 1 na expressão de inicialização. Depois é a aplicada a expressão de condição: enquanto
o valor da variável x for menor que 11, execute as instruções dentro do bloco da estrutura.

Após a expressão de condição, há uma estrutura de condição if com a condição: se o
valor da variável x for igual a 4, então break. Se a condição for falsa, então a estrutura é
pulada e é impresso o valor da variável x concatenado com uma vírgula. No final do corpo da
declaração for, a variável x é incrementada na expressão de incremento. Após isso, a expres-
ção de condição é feita novamente.

Perceba que foram impressos apenas três valores da variável x: 1, 2 e 3. Isso aconteceu
porque quando a variável x assumiu o valor 4, a condição da estrutura de condição if foi satis-
feita e chegou ao break, o que forçou o término da declaração for.

www.grancursosonline.com.br

87

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br

DIRETO DO CONCURSO

20. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/DESENVOL-
VIMENTO DE SISTEMAS) Analise o código Java a seguir.

A execução desse código produz:
a. os vinte primeiros números primos.
b. os números primos menores que vinte.
c. os vinte primeiros números não primos.
d. os números não primos menores que vinte.
e. os números 2, 4, 7, 11, 16.

COMENTÁRIO

Organizando o código da questão, temos:
public class Enigma1 {
public static void main(String[] args) {
int num = 20, conta;
for (int i = 2; i <= num; i++) {
conta = 0;
for (int j = 2; j <= i / 2; j++) {
if (i % j == 0) {
conta ++;
break;
}

www.grancursosonline.com.br

88

Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM

www.grancursosonline.com.br

}
if (conta == 0) {
System.out.println(i);
}
}
}
}
Resultado da execução do código:
2

3

5

7

11

13

17

19

A classe Enigma1 é uma classe executável por ter o método main().
Verificando o resultado da execução do código, podemos concluir que são números primos
menores que 20, o que faz a letra “b” ser o gabarito.
Esse código é bem trabalhoso e com muitos detalhes. Temos, por exemplo, uma declara-
ção for dentro de outra.
No método main() da classe Enigma1, temos duas variáveis locais do tipo int: num e conta.
A variável num é inicializada com o valor 20 e a variável conta não foi inicializada.
Temos a primeira estrutura de

Analise o código Java apresentado e assinale a opção que apresenta o resultado completo produzido pela execução desse código.

a. 2, 3, 5, 2, 3, 4, 5
b. 2, 3, 1
c. 2, 3
d. 2, 3, 2, 3, 4, 5
e. 2, 3, 5, 1

O que a instrução break faz?

a) Termina as declarações mais internas das quais o break faz parte.
b) Salta uma iteração das declarações mais internas das quais o break faz parte.
c) Faz a execução sair do método atual.

Prévia do material em texto

2
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Sumário
APRESENTAÇÃO ..............................................................................................................3
VISÃO GERAL DO DESENVOLVIMENTO COM JAVA ....................................................4
VARIÁVEIS EM JAVA ........................................................................................................20
TIPOS PRIMITIVOS ...........................................................................................................27
OPERADORES ..................................................................................................................39
DECLARAÇÕES DE CONTROLE DE FLUXO .................................................................68
ARRAYS .............................................................................................................................94
RESUMO ............................................................................................................................103
MAPAS MENTAIS ..............................................................................................................112
GABARITO ........................................................................................................................146
REFERÊNCIAS ..................................................................................................................148
www.grancursosonline.com.br
3
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Apresentação
Fala, meu (minha) consagrado(a) concurseiro(a)? Tudo beleza com você?
Sou o professor Rogério Araújo. Sou formado em Bacharelado em Ciência da Computa-
ção pela Universidade Estadual do Piauí (UESPI), especialista em Governança em TI pela 
Unieuro e em Desenvolvimento de Sistemas Baseados em Software Livre pela Universidade 
da Amazônia (UNAMA). Atualmente, estou cursando o MBA Data Science e Analytics pela 
USP/Esalq. Possuo as certificações Certified ScrumMaster, COBIT 4.1 Foundation Certified 
e Sun Certified Associate for J2SE (SCJA). Sou autor de artigos no site www.rogeraoaraujo.
com.br e no blog do Gran Cursos Online (https://blog.grancursosonline.com.br/author/roge-
rio-araujo/) e tenho meu canal no Youtube (www.youtube.com/rgildoaraujo). Sou professor de 
cursos na área de Tecnologia da Informação para concursos.
Quanto à minha carreira como servidor público, atualmente trabalho na Secretaria do 
Tesouro Nacional, vinculada ao Ministério da Economia, exercendo o cargo de Auditor Federal 
de Finanças e Controle, na área de Governança de TI. Também já passei pelo Tribunal Regio-
nal Federal (TRF) 1ª Região, exercendo o cargo de Analista Judiciário, na especialidade de 
Analista de Sistemas, e pelo Ministério Público Federal (MPF), como Técnico de Informática.
Como concurseiro, fui aprovado em alguns concursos, tais como, em ordem decrescente de 
ano, STN 2013 (nomeado e onde estou hoje), TST 2012 (nomeado), TSE 2012 (aproveitado e 
nomeado no TRF 1ª Região), TRE/PE 2011 (classificado), TRT 19ª Região 2011 (classificado), 
MPU 2010 (classificado), STM 2010 (classificado), SERPRO 2008 (nomeado), TRT 18ª Região 
2008 (classificado), MPU 2006 (classificado), BACEN 2005 (classificado), TRE/MA 2005 (classi-
ficado), TRT 16ª Região 2005 (classificado), TCE/PI 2005 (classificado) e MPU 2004 (nomeado).
Professor Rogerão Araújo – @profRogeraoAraujo
www.grancursosonline.com.br
http://www.rogeraoaraujo.com.br
http://www.rogeraoaraujo.com.br
https://blog.grancursosonline.com.br/author/rogerio-araujo/
https://blog.grancursosonline.com.br/author/rogerio-araujo/
http://www.youtube.com/rgildoaraujo
4
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
1. VISÃO GERAL DO DESENVOLVIMENTO COM JAVA
1.1. COMPILAÇÃO DOS ARQUIVOS.JAVA E INTERPRETAÇÃO E EXECUÇÃO 
DOS ARQUIVOS.CLASS
Na linguagem de programação Java:
• O código-fonte é escrito em arquivos texto com a extensão.java.
• Esses arquivos são então compilados em arquivos.class pelo compilador javac;
• Um arquivo.class:
 – Não contém código nativo para um processador específico;
 – Contém bytecodes, que é uma linguagem da Máquina do Virtual Java (JVM);
 – É interpretado e executado pelo comando java para criar uma instância da JVM.
Detalhando o processo, temos duas fases (figuras 1.1 e 1.2):
• Fase de compilação das classes Java;
• Fase de interpretação e execução dos bytecodes.
Na fase de compilação, compilamos nossas classes Java (arquivos texto de exten-
são.java) com um compilador Java (chamado pelo comando javac seguido do nome do 
arquivo.java) que vem junto com um JDK (kit de desenvolvimento Java). O resultado da com-
pilação das classes Java são arquivos de extensão.class que contêm bytecodes.
ATENÇÃO
Os bytecodes gerados a partir de uma classe são únicos: não estão em linguagem de 
máquina específica de uma plataforma.
Temos agora a fase de interpretação e execução dos bytecodes (contidos nos arqui-
vos de extensão .class). Nessa fase, os bytecodes são interpretados e executados pela 
Máquina Virtual Java (JVM) no cliente, onde nossa aplicação irá rodar. Usamos o comando 
java seguido do nome do arquivo.class para a interpretação e execução dos bytecodes.
Para termos a nossa JVM, é necessário instalar no cliente um ambiente de execução 
Java (JRE) para o tipo específico da plataforma desse cliente. O JRE conterá a JVM.
www.grancursosonline.com.br
5
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 1.1: Compilação das classes Java e interpretação e execução dos bytecodes.
ATENÇÃO
O JRE traz consigo a JVM. Esta interpretará e executará os bytecodes (através do coman-
do java). Para cada plataforma onde iremos rodar nossa aplicação, teremos JRE e JVM 
específicos daquela plataforma.
Não precisamos recompilar a aplicação para que possamos rodá-la em plataformas diferen-
tes. Compilamos uma vez nossas classes para termos um conjunto único de bytecode e cada JVM 
para uma plataforma específica saberá interpretar e executar esse conjunto nessa plataforma.
Assim, meu amigo, a tecnologia Java nos oferece a portabilidade! Escreva sua aplicação 
apenas uma vez e execute-a em qualquer lugar!
www.grancursosonline.com.br
6
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 1.2: Portabilidade com a tecnologia Java.
Figura 1.3: Arquivos.java e.class.
 
www.grancursosonline.com.br
7
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
1. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/SUPORTE E 
INFRAESTRUTURA) Considere a compilação de um ou mais programas por meio da 
linha de comando, num ambiente Java. Nesse caso, o comando que está corretamente 
formado para esse fim é:
a. compile teste.java –type java
b. java teste.java
c. javac *.java
d. jvm Teste1.java teste2.java
e. parse java teste.java
COMENTÁRIO
Compilamos nossas classes Java (arquivos texto de extensão.java) com um compi-
lador Java:
javac *.java
O resultado da compilação das classes Java são arquivos de extensão.class que contêm 
bytecodes.
2. (FGV/2013/TJ/AM/ASSISTENTE JUDICIÁRIO/PROGRAMADOR) Observe a figura a 
seguir, que representa o ambiente Java.
O arquivo.class não contém código que é nativo para seu processador, mas sim a lin-
guagem de máquina da Java Virtual Machine (Java VM), conhecida por
a. framecode.
b. bytecode.
c. bitcode.
d. zipcode.
e. microcode.
www.grancursosonline.com.br
8
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
O arquivo.class não contém código nativo para um processador específico. Ele contém 
bytecodes, que é uma linguagem da Máquina do Virtual Java (JVM) e é interpretado e exe-
cutado pelo comando java para criar uma instância da JVM.
3. (FGV/2012/SENADO FEDERAL/ANALISTA LEGISLATIVO/ANÁLISEDE SUPORTE 
DE SISTEMAS) Observe a figura abaixo, associada à linguagem Java.
Para permitir que um mesmo programa seja executado em vários sistemas operacio-
nais, a plataforma java gera códigos genéricos *.class e os traduz para o código da 
máquina local, *.exe ou *.bin, somente no momento da execução.
Nesse contexto, os códigos específicos para a máquina virtual Java, e não para a má-
quina local, recebem o nome de:
a. microcode.
b. scriptcode.
c. framecode.
d. bytecode.
e. javacode.
www.grancursosonline.com.br
9
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
A questão trouxe uma figura parecida com a figura 1.2. Na linguagem de programação Java:
• O código-fonte é escrito em arquivos texto com a extensão.java;
• Esses arquivos são então compilados em arquivos.class pelo compilador javac;
• Um arquivo.class:
 – Não contém código nativo para um processador específico;
 – Contém bytecodes, que é uma linguagem da Máquina do Virtual Java (JVM); e
 – É interpretado e executado pelo comando java para criar uma instância da JVM.
Na imagem, o JDK contém o compilador Java (chamado pelo comando javac). Também te-
mos o JRE na imagem. Nesse caso, como sabemos, o JRE traz a JVM, que irá interpretar 
e executar os bytecodes.
Só uma observação: o resultado da compilação em bytecodes de um arquivo.java é um 
arquivo.class, e não arquivo.jar, como está na imagem. Os arquivos.jar são pacotes que 
contêm vários arquivos.class.
Agora, respondendo a questão, ela fala dos bytecodes.
1.2. JDK, JRE, JVM E JIT
O Java Development Kit (JDK) é o conjunto de ferramentas necessárias para realizar o 
desenvolvimento de aplicações Java. O JDK inclui:
• Java Runtime Environment (JRE); e
• Ferramentas de programação:
 – javac: compilador;
 – java: interpretador;
 – appletviewer: visualizador de applets;
 – javadoc: gerador de documentação;
 – jar: empacotador de aplicações.
Por sua vez, o Java Runtime Environment (JRE) é a plataforma Java. Ele é composto 
por dois componentes:
• Java Virtual Machine (JVM);
• Java Application Programming Interface (Java API):
 – É uma biblioteca de componentes que possui vários recursos úteis e é utilizada para 
execução de aplicações Java.
www.grancursosonline.com.br
10
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
ATENÇÃO
É necessário instalar um JRE específico de uma plataforma, pois junto com ele vem uma JVM 
que saberá lidar com essa plataforma e conseguirá executar aplicações Java naquele ambiente.
Explicando a figura 1.4, temos:
• Na camada mais baixa, temos o hardware específico;
• Na camada mais acima, temos a plataforma Java ou o JRE;
 – Junto com o JRE vem a JVM e a API Java; e
• Na última camada, temos a nossa aplicação Java.
Figura 1.4: Onde uma classe Java é executada.
Agora chegou a vez de conhecermos a Java Virtual Machine (JVM). A máquina virtual 
Java é a peça-chave para fornecer capacidade de multiplataforma para as aplicações 
Java. É o segredo da frase “Write once, run everywhere”.
A JVM está disponível em muitos sistemas operacionais diferentes. Com isso, os mesmos 
arquivos .class são capazes de funcionar nesses sistemas operacionais: Microsoft Windows, 
Solaris OS, Linux, Mac OS etc.
Essa máquina virtual pode ser desenvolvida por qualquer organização, desde que siga as 
especificações para construção de uma JVM.
Ela é responsável por interpretar e executar o bytecode. Também possui a função de ser 
provedora de formas e meios de o aplicativo conversar com o sistema operacional.
No tempo de execução, a JVM:
• carrega os arquivos de classe;
• determina a semântica de cada bytecode individual; e
• executa a computação apropriada.
www.grancursosonline.com.br
11
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Mas nem tudo são flores. O uso adicional do processador e da memória durante a inter-
pretação significa que um aplicativo Java executa mais lentamente do que um aplicativo 
nativo. Nesse caso, para ajudar na melhora do desempenho de aplicativos Java no tempo de 
execução, utilizamos o Compilador Just-in-time (JIT).
O JIT é um componente do JRE que ajuda a melhorar o desempenho de programas Java, 
compilando bytecodes no código de máquina nativo no tempo de execução.
O compilador JIT é ativado quando um método Java é chamado e compila os bytecodes 
desse método no código de máquina nativo. Quando um método tiver sido compilado, a JVM 
chama o código compilado desse método diretamente, em vez de interpretá-lo.
ATENÇÃO
Teoricamente, se a compilação não tiver requerido tempo de processador e uso de memó-
ria, compilar cada método pode permitir que a velocidade do programa Java se aproxime 
àquela de um aplicativo nativo.
Resumindo, temos (figura 1.5):
• A JVM é o coração da ideia da portabilidade usando a tecnologia Java;
• Ela vem junto com o JRE, que também é composto;
 – pela API Java; e
 – pelo Compilador JIT.
• O JRE deve ser instalado no ambiente dos usuários onde nossas aplicações 
Java rodarão.
• Para os desenvolvedores, instala-se o JDK;
 – Que, além de trazer o JRE, inclui, entre outras ferramentas, o compilador de classes 
para bytecodes.
www.grancursosonline.com.br
12
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 1.5: JDK, JRE, JVM e Compilador JIT.
De forma geral, a plataforma JSE possui a seguinte estrutura (figura 1.6):
• O JDK, que:
 – vai da linguagem Java até a JVM;
 – também inclui ferramentas e APIs para desenvolvimento de aplicações.
• O JRE, que vai da API JSE até a JVM.
• Inúmeras plataformas onde podemos instalar:
 – JDK, caso queiramos desenvolver utilizando nossa plataforma preferida; ou
 – JRE, onde as aplicações serão executadas.
Vamos ver agora um exemplo de classe Java?
www.grancursosonline.com.br
13
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 1.6: Plataforma Java Standard Edition.
Exemplo:
public class PrimeiroExemplo {
public static void main(String[] args) {
 System.out.println(“As árveres somos nozes e o jardinheiro 
 é Zezus!”);
}
}
Resultado da execução do exemplo acima:
As árveres somos nozes e o jardinheiro é Zezus!
No exemplo acima, temos uma classe Java executável chamada PrimeiroExemplo.
A classe possui um método especial: método main. Esse método transforma uma classe 
Java em uma classe executável. Entretanto, nem todas as classes precisam desse método.
Para haver a compilação da nossa classe em bytecodes, utilizamos o comando javac:
javac PrimeiroExemplo.java
Sendo que o nome-classe deve ser o mesmo nome do arquivo.
Para haver a interpretação e execução do arquivo .class resultante da compilação ante-
rior utilizando o comando java:
java PrimeiroExemplo
www.grancursosonline.com.br
14
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Ao executarmos a classe, temos a seguinte saída: As árveres somos nozes e o jardi-
nheiro é Zezus!
DIRETO DO CONCURSO
4. (FGV/2016/COMPESA/ANALISTA DE GESTÃO/ADMINISTRADOR DE BANCO DE 
DADOS/ADAPTADO) Sobre as características da linguagem Java, analise a afirmati-
va a seguir.
Requer a existência de uma máquina virtual para rodar.
COMENTÁRIO
A JVM é responsável por interpretar e executar os bytecodes de uma aplicação Java. Tam-
bém possui a função de ser provedora de formas e meios de a aplicação conversar com o 
sistema operacional.
5. (FGV/2010/FIOCRUZ/TECNOLOGISTA EM SAÚDE/ENGENHARIA DE PRODUÇÃO) 
Selecione a opção correspondente a uma linguagem de programação multiplataforma:
a. C#
b. Delphi
c. Fox Pro
d. Java
e. Visual Basic
COMENTÁRIO
A JVM é a peça-chave para fornecer capacidade de multiplataforma para as aplicações 
Java. É o segredo da frase “Write once, run everywhere”.
Ela está disponível em muitos sistemas operacionais diferentes. Com isso, os mesmos ar-
quivos .class são capazes de funcionar nesses sistemas operacionais:Microsoft Windows, 
Solaris OS, Linux, Mac OS etc.
E essa ideia de portabilidade é oferecida pela linguagem Java, o que faz a letra “d” ser o 
nosso gabarito.
www.grancursosonline.com.br
15
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
1.3. Fases de uma aplicação Java
Figura 1.7: Fases de uma aplicação Java.
São cinco fases pelas quais passa uma aplicação Java (figura 1.7):
• edição;
• compilação;
• carregamento;
• verificação; e
• execução.
Figura 1.8: Fases edição e compilação de uma aplicação Java.
www.grancursosonline.com.br
16
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Explicando as duas primeiras fases (figura 1.8):
• Edição:
 – Primeiro, editamos nossas classes;
 – Provavelmente utilizaremos uma IDE como NetBeans ou Eclipse;
 – Com a edição delas, que são arquivos com extensão.java, as classes são salvas na 
memória secundária.
• Compilação:
 – O compilador irá pegar os arquivos.java e os compilará, gerando os bytecodes, 
criando assim arquivos com extensão .class;
 – Os arquivos .class também são armazenados na memória secundária.
As três últimas fases são (figura 1.9):
• Carregamento:
 – O programa deve ser primeiramente colocado na memória antes de ser executado;
 – Isso é feito pelo carregador de classe, que pega o arquivo (ou arquivos) .class que 
contém os bytecodes e o transfere para a memória.
• Verificação:
 – Antes que o interpretador Java execute os bytecodes, eles são verificados pelo veri-
ficador de bytecode;
 – Isso assegura que os bytecodes são válidos e não violam as restrições de segu-
rança do Java.
• Execução:
 – Finalmente, a JVM lê os bytecodes e os interpreta para uma linguagem que o com-
putador pode entender (linguagem de máquina);
 – Possivelmente armazenando valores dos dados enquanto executa o programa.
www.grancursosonline.com.br
17
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 1.9: Fases carregamento, verificação e execução de uma aplicação Java.
 
O PULO DO GATO
Para ajudar a memorizar as fases, podemos usar o mnemômico ECo CaVEx: (E) edição, 
(Co) compilação, (Ca) carregamento, (V) verificação e (Ex) execução.
A tabela 1.1 traz um resumo das fases de uma aplicação Java.
Tabela 1.1: Resumo da descrição das fases de uma aplicação Java.
Fase Descrição
Edição O programa é criado no editor e armazenado em disco.
Compilação O compilador cria bytecodes e os armazena em disco.
Carregamento O carregador de classe coloca bytecodes na memória principal.
Verificação
O verificador de bytecodes confirma que todos os bytecodes são 
válidos e não violam restrições de segurança de Java.
Execução
A JVM lê os bytecodes e os interpreta para uma linguagem que o 
computador pode entender (linguagem de máquina), possivelmente 
armazenando valores dos dados enquanto executa o programa.
www.grancursosonline.com.br
18
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
DIRETO DO CONCURSO
6. (FGV/2010/CODESP/SP/ANALISTA DE SISTEMAS/TIPO 1) A figura abaixo mostra as 
cinco fases para execução de programa Java
O processo de execução ocorre da seguinte forma:
• Na edição, o programa é criado no editor e armazenado em disco.
• Na compilação, o compilador gera um PRODUTO e o armazena em disco.
• Na carga, o carregador de classe coloca o PRODUTO na memória.
• Na verificação, o verificador checa que o PRODUTO é válido e não viola as restrições 
de segurança do Java.
• Na interpretação, o interpretador lê o PRODUTO e faz a tradução para uma lingua-
gem que o computador pode entender, possivelmente armazenando valores de dados 
enquanto executa o programa.
Nesse processo, PRODUTO representa o seguinte componente:
a. Bytecode.
b. Framework.
c. Firmware.
d. Framecode.
e. Bytework.
www.grancursosonline.com.br
19
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
Uma aplicação Java passa pelas seguintes fases:
• Edição:
 – O programa é criado no editor e armazenado em disco.
• Compilação:
 – O compilador cria bytecodes e os armazena em disco.
• Carregamento:
 – O carregador de classe coloca bytecodes na memória principal.
• Verificação:
 – O verificador de bytecodes confirma que todos os bytecodes são válidos e não 
violam restrições de segurança de Java
• Execução:
 – A JVM lê os bytecodes e os interpreta para uma linguagem que o computador pode 
entender (linguagem de máquina), possivelmente armazenando valores dos dados 
enquanto executa o programa.
Então, a palavra PRODUTO citada na questão representa os bytecodes, ou seja, letra “a”.
www.grancursosonline.com.br
20
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
2. VARIÁVEIS EM JAVA
2.1. INTRODUÇÃO
Os programas de computadores são compostos por dados (variáveis) e código 
(instruções).
As variáveis são recipientes (endereços de memória) que armazenam informações de 
um determinado tipo, para que seja possível a manipulação delas pelos programas.
Também temos as constantes:
• As informações contidas nas variáveis podem ser modificadas no decorrer do programa;
• Enquanto as informações relacionadas a constantes não podem ser modificadas 
dessa maneira.
Faremos uma analogia entre variáveis e constantes com garagens de carros:
• Os dados são os carros.
• Tanto as variáveis quanto as constantes são as garagens:
 – As variáveis são garagens com rotatividade de carros de mesma marca e de mesmo 
modelo, mas nem sempre teremos o mesmo carro estacionado.
 – As constantes, por sua vez, são garagens de carros de um colecionador, onde cada 
garagem recebe um carro de mesma marca e de mesmo modelo: uma vez um carro 
estacionado na garagem, ele não sai mais.
• O nome das variáveis e das constantes é a identificação das garagens;
• O tipo das variáveis e das constantes define qual a marca e qual o modelo de carros 
as garagens podem receber.
Se definirmos que, em nossas garagens, caibam apenas carros do tipo Fiat Uno, para 
nossa tristeza, não poderemos estacionar uma Dodge Ram. Definimos o tipo da garagem 
para receber modelo de carro de pequeno porte, e não um modelo de carro maior. Seria 
como tentarmos atribuir um valor de ponto flutuante (Dodge Ram) para uma variável (gara-
gem) do tipo int (Fiat Uno).
2.2. DECLARAÇÃO DE VARIÁVEIS EM JAVA
Agora vamos entender as variáveis em Java.
Ao declararmos uma variável, determinamos:
• seu nome;
• seu tipo; e
• um possível valor inicial.
www.grancursosonline.com.br
21
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 2.1: Esquema da declaração de variáveis em Java.
O valor literal é o valor que uma variável pode receber de acordo com seu tipo. É a 
nossa história da garagem para receber um Fiat Uno e que não pode receber uma Dodge 
Ram. Na figura 2.1, o valor 15 pode ser recebido perfeitamente pela variável x que do tipo int, 
pois esse valor está no rol de valores recebidos por uma variável desse tipo.
ATENÇÃO
Para identificarmos onde uma variável foi declarada, basta vermos no código onde foi de-
finido seu tipo (int x = 15;).
As variáveis em Java também são chamadas de campos.
Temos quatro classificações de variáveis na linguagem Java:
• Variáveis de instância;
• Variáveis de classe;
• Variáveis locais;
• Parâmetros.
As variáveis de instância, também chamadas de campos não estáticos, são variáveis 
que mantêm informações específicas e individuais de cada objeto (ou instância) de uma 
classe. Quando instanciamos uma classe, ou seja, quando criamos um objeto a partir dela, 
os valores das variáveis de instância desse objeto pertencem apenas a ele.
www.grancursosonline.com.br
22
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
O escopo dessas variáveis é de classe, ou seja, ao declararmos uma variável de classe, 
ela poderá ser vista em todoo corpo dessa classe (figura 2.2).
As variáveis de classe são também chamadas de campos estáticos. Elas possuem o 
modificador static. Esse modificador informa ao compilador que haverá apenas uma cópia 
da variável, não importando quantas instâncias a classe tenha.
As variáveis de classe são variáveis que mantêm informações da classe e não de instân-
cias dessa classe e o escopo delas também é de classe (figura 2.2).
Figura 2.2: Escopo das variáveis de classe e de instância.
 
ATENÇÃO
Para variáveis de classe e de instância, o escopo delas é de classe: isso significa que elas 
são enxergadas em qualquer ponto dentro da classe, seja dentro de um método ou dentro 
de um controle de fluxo qualquer dentro do limite da classe.
As variáveis locais são variáveis criadas dentro do escopo de construtores, de méto-
dos ou de controle de fluxos. Essas variáveis possuem escopo dessas estruturas, ou seja, 
são vistas apenas dentro da estrutura onde foram declaradas (figura 2.3), ou seja, as variá-
veis locais podem possuir escopo de construtor, método ou controle de fluxo.
Apenas antecipando, um construtor nada mais é que um método especial com o nome 
igual ao nome da classe e que não possui nenhum tipo de retorno onde podemos fazer devi-
das inicializações de variáveis de instância quando criamos um objeto de uma classe, ou 
seja, quando instanciamos uma classe.
www.grancursosonline.com.br
23
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 2.3: Escopo das variáveis locais.
Os parâmetros são valores passados para construtores, para métodos ou para cláusula 
catch em um bloco try-catch, cada vez que uma exceção é capturada. A declaração dos parâ-
metros é feita na assinatura dessas estruturas e eles possuem escopo dessas estruturas, ou 
seja, são vistos apenas dentro da estrutura onde foram declarados (figura 2.5): construtor, 
método ou cláusula catch em um bloco try-catch, cada vez que uma exceção é capturada.
Figura 2.4: Escopo dos parâmetros.
www.grancursosonline.com.br
24
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Quando declaramos variáveis, como já vimos, citamos seu tipo, seu nome e possivel-
mente um valor inicial:
int x = 15;
Normalmente, em cada linha, temos uma declaração de variável, porém, podemos ter múl-
tiplas declarações em uma linha apenas, onde usamos vírgulas para separar as declarações:
int x = 15, y = 10;
Recomenda-se ter uma declaração por linha. Fica muito mais fácil de manter os códigos.
Importante dizer que a declaração de uma variável pode ser feita em qualquer lugar 
do código:
int x = 15;
System.out.println(x);
int y = 10;
Entretanto, se quiser, ao invés de “x”, imprimir o valor de “y”, no nosso exemplo, eu deve-
ria declarar “y” antes do System.out.println:
int x = 15;
int y = 10;
System.out.println(y);
Para declararmos uma variável de classe, basta usar o modificador static:
public static int quantidadePortas = 2;
Quando desejo que uma variável tenha apenas um valor e que esse valor não possa ser 
modificado, ou seja, que seja uma constante, utilizo o modificador final. Com isso, teremos 
uma variável final. Podemos aplicar esse modificador nos seguintes tipos de variáveis em Java:
• Variáveis de classe;
• Variáveis de instância;
• Variáveis locais;
• Parâmetros.
Exemplos:
public static final String NOME_CLASSE = “Pessoa”;
final int x = 3;
public nomeMetodo(final int y) {
...
}
www.grancursosonline.com.br
25
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Para finalizarmos, deixarei um exemplo de classe, tendo variável de instância, variável de 
classe, variável final, parâmetro e variável local:
public class Main {
private int variavelInstancia = 15;
private static int variavelClasse = 20;
private static final int variavelFinal = 25;
public void metodo(int parametro) {
int variavelLocal = 35;
System.out.println(variavelInstancia);
System.out.println(variavelClasse);
System.out.println(variavelFinal);
System.out.println(parametro);
System.out.println(variavelLocal);
// A variavel i é uma variável local da estrutra de repetição. Ela 
só pode ser vista dentro dessa estrutura.
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
public static void main(String[] args) {
Main vo = new Main();
vo.metodo(30);
}
Resultado da execução do exemplo acima:
15
20
25
30
35
0
1
2
3
4
www.grancursosonline.com.br
26
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
DIRETO DO CONCURSO
7. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/SUPORTE E 
INFRAESTRUTURA) Analise o código Java a seguir.
A execução desse código provoca:
a. a exibição dos números 012.
b. a exibição dos números 0122.
c. a exibição dos números 0123.
d. erro em tempo de compilação.
e. erro em tempo de execução.
COMENTÁRIO
A classe Test é uma classe pública. Ela possui o método chamado method(). É um método 
público, sem parâmetros e não retorna nada (void). Esse método possui uma estrutura de 
repetição for. Dentro dela, há uma variável local i declarada dentro da estrutura (int i = 0). 
Ou seja, não podemos citar essa variável fora da estrutura de repetição.
Veja que, após a estrutura for, há uma linha onde se imprime o valor da variável local i no 
console do usuário. Porém, essa variável tem escopo apenas dentro da estrutura for, o que 
faz gerar um erro em tempo de compilação, o que faz a letra “d” ser nosso gabarito.
www.grancursosonline.com.br
27
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
3. TIPOS PRIMITIVOS
3.1. Introdução
A linguagem de programação Java é uma linguagem:
• de tipagem estática;
• fortemente tipada.
O que isso significa?
Quando se diz que uma linguagem é de tipagem estática, significa dizer que temos de 
declarar o tipo da variável, pois esse tipo deve ser conhecido no tempo de compilação:
int x = 15;
No nosso exemplo, declaramos a variável x com o tipo int.
Já o conceito de linguagem fortemente tipada é mais relacionado ao valor que uma 
variável pode receber de acordo com o tipo dela, ou seja, quando há a exigência de que os 
valores armazenados em uma variável sejam compatíveis com o tipo dela:
int x = 15;
No nosso exemplo, a variável x pode receber o valor 15, pois esse valor está entre os 
aceitos para o tipo int.
Figura 3.1: Linguagem estática e fortemente tipada.
Juntando os dois conceitos, temos o conceito da tipagem estaticamente forte que ajuda 
a detectar erros em tempo de compilação.
Como vimos, atribuir o valor 15 para uma variável do tipo int: perfeito! Se eu fiz uma gara-
gem para caber um Fiat Uno e eu estacionei um, então está tudo certo. Agora, atribuir um 
valor de ponto flutuante para uma variável do tipo int: OPA!!! Temos um problema detectado 
pelo compilador: esse valor não é compatível com o tipo int.
Se minha garagem comporta apenas carros do porte do Fiat Uno, como vou comprar uma 
Dodge Ram e tentar estacionar lá? Claro, apenas se eu serrar algumas partes desse carrão 
para ele caber na garagem. Chamamos isso de casting: moldamos o valor de ponto flutuante 
para ficar compatível com o tipo inteiro, porém, perderemos as casas decimais, assim como 
perdemos partes da Dodge Ram quando a serramos.
www.grancursosonline.com.br
28
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Se se atribuir uma String para uma variável do tipo int, nem o casting resolve essa 
atribuição.
ATENÇÃO
Podemos encontrar fontes citando que uma linguagem fortemente tipada é uma linguagem 
em que os tipos das variáveis são conhecidos em tempo de compilação. Esse conceito é 
o da linguagem ser de tipagem estática. O conceito de fortemente tipada é relacionado ao 
valor que uma variável pode receber em relação ao tipo dela.
3.2. Tipos primitivos na linguagem Java
Em Java, nós temos oito tipos primitivos. Podemos dividiros tipos em dois grandes 
grupos: tipos numéricos e o tipo boolean, que é um tipo primitivo propriamente dito. Dentro 
dos tipos numéricos, temos duas subdvisões: tipos integrais e tipos de ponto flutuante.
Nos tipos integrais, temos os tipos byte, short, int, long e char.
Nos de ponto flutuante, temos float e double.
O tipo boolean aceita apenas dois valores: true e false. true e false são os únicos valo-
res aceitos por variáveis do tipo boolean.
Tabela 3.1: Sobre os tipos primitivos na linguagem Java – Parte I.
Tipo Bits Possui sinal Tipo de valor
byte 8 Sim Inteiro
short 16 Sim Inteiro
int 32 Sim Inteiro
long 64 Sim Inteiro
boolean 1? Não Boolean
char 16 Não
Caracteres 
UNICODE
float 32 Sim Ponto flutuante
double 64 Sim Ponto flutuante
www.grancursosonline.com.br
29
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
A primeira coluna da tabela 3.1 representa o tipo primitivo. A segunda representa quantos 
bits são necessários para representar cada tipo. Fiz uma ordenação crescente até a metade 
da tabela, de modo que os quatro tipos numéricos (exceto o char) ficassem agrupados e 
depois reiniciei, colocando o restante dos tipos (boolean, char, float, double).
Note que os valores dos bits da primeira metade da tabela são idênticos aos da outra 
metade, ou seja, 16, 32, 64 e 16, 32, 64. Isso vai facilitar na memorização dos bits utilizados 
na representação dos tipos primitivos.
Temos uma exceção na segunda metade da tabela, que é a quantidade de bits para 
representar o tipo boolean: esse tipo representa, normalmente, um bit de informação. Friso 
que é normalmente porque seu tamanho não é precisamente definido.
A terceira coluna da tabela 3.1 informa se um tipo possui sinal para representar números 
negativos e positivos, e a quarta mostra o tipo de valor que cada tipo primitivo pode aceitar.
Tabela 3.2: Sobre os tipos primitivos na linguagem Java – Parte II.
Tipo Faixa de valores Valor padrão
byte -27 a 27 – 1 -128 a 127 0
short -215 a 215 – 1 -32.768 a 32.767 0
int -231 a 231 – 1 -2.147.483.648 a 2.147.483.647 0
long -263 a 263 – 1
-9.223.372.036.854.775.808 a 
9.223.372.036.854.775.807 0L
boolean true ou false – false
char '\u0000' a '\uffff' – 'u\0000'
float
+/-3.4E-38 a +/-
3.4E+38 – 0.0f
double
+/-1.7E-308 a +/-
1.7E+308 – 0.0
A segunda e a terceira colunas da tabela 3.2 representam a faixa de valores que um tipo 
pode abranger. Essa coluna é derivada da quantidade de bits da segunda coluna da tabela 3.1.
A última coluna da tabela 3.2 informa o valor padrão que uma variável pode receber de 
acordo com seu tipo.
São três pontos que precisamos ter mais atenção, em ordem decrescente de cobrança 
(tabela 3.3).
www.grancursosonline.com.br
30
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Tabela 3.3: Principais pontos sobre tipos primitivos para concursos.
Ponto Título Descrição
Primeiro 
ponto
Quais são os tipos 
primitivos
byte, short, int, long, boolean, char, float, doublé
As bancas perguntam muito sobre isso.
Temos de aprender quais são esses oito tipos
Segundo 
ponto
Quais as faixas de 
valores para os tipos 
numéricos integrais 
byte, short, int e long
Apenas como observação, o tipo char também 
é numérico integral, mas as faixas de valores 
mais cobradas são as dos tipos numéricos 
integrais citados.
Terceiro 
ponto
Quantos bits (ou 
bytes) são usados 
para representar cada 
tipo (segunda coluna)
Sendo que as quantidades de bits mais 
cobradas são as dos tipos numéricos integrais 
byte, short, int e long.
Vamos entender as tabelas 3.1 e 3.2 e os principais pontos dela com uma série 
de esquemas.
3.2.1. Intervalos dos tipos numéricos integrais (esquema do BSIL 1329)
Neste esquema, vou mostrar como aprender a memorizar quais as faixas de valores para 
os tipos numéricos integrais byte, short, int e long.
• Primeira parte da dica:
 – Imagine uma criança gripada tentando dizer “psiu”: ela provavelmente dirá BSIL =)
• Segunda parte da dica:
 – O número 1.329.
• Fechando nossa dica: BSIL 1.329!
www.grancursosonline.com.br
31
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 3.2: Esquema do BSIL 1.329.
Explicando melhor (figura 3.2):
• BSIL:
 – byte;
 – short;
 – int;
 – long.
• 1.329: Cada algarismo representa o primeiro algarismo dos números da faixa de valo-
res de cada tipo:
 – 1: -128 a 127;
 – 3: -32.768 a 32.767;
 – 2: -2 bilhões e alguma coisa a 2 bilhões e alguma coisa; e
 – 9: -9 trocentos e lá vai pedra a 9 trocentos e lá vai pedra.
A sequência BSIL 1.329 facilita a memorização das faixas de valores de cada tipo e, 
se ocorrer de nos depararmos com uma questão que aborte esse tópico, usaremos essa 
sequência, que é uma forma de resgatarmos a informação com tranquilidade. Responderemos 
nossa questão sem medo e rapidamente e passaremos para frente, pois teremos muitas 
outras questões para responder!
www.grancursosonline.com.br
32
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
3.2.2. Intervalos dos tipos numéricos integrais (esquema do 2x)
Bora avançar mais um pouco na memorização da tabela dos tipos primitivos?
Figura 3.3: Esquema de quantos de bits e bytes cada tipo representa.
Agora aprenderemos como memorizar:
• quais são os oito tipos primitivos; e
• quantos bits e bytes cada tipo representa.
Com esse esquema (figura 3.3), fechamos os três itens mais cobrados dos tipos primitivos.
O tipo byte possui um byte de tamanho, como o próprio nome indica. Um byte possui 
quantos bits? Oito bits.
Para o restante do grupo BSIL, basta seguir para a próxima letra multiplicando o número 
de bytes e de bits por 2:
• short: 2 bytes ou 16 bits;
• int: 4 bytes ou 32 bits; e
• long: 8 bytes ou 64 bits.
Agora veremos o grupo BCFD (boolean, char, float e double).
O tipo boolean representa um bit de informação, mas seu tamanho não é precisa-
mente definido.
www.grancursosonline.com.br
33
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Esse tipo é uma exceção dos valores do grupo BCFD, porém, do segundo tipo em diante 
desse grupo, a sequência é a mesma do grupo BSIL:
• char: 2 bytes ou 16 bits;
• float: 4 bytes ou 32 bits; e
• double: 8 bytes ou 64 bits.
3.2.3. Intervalos dos tipos numéricos integrais (números negativos e números 
positivos)
Quantos bits são necessários para representar um valor negativo e outro positivo para 
cada tipo do grupo BSIL?
Começaremos explicando sobre quantos bits são necessários para representar os números 
negativos. Primeiro, reservamos um bit para representar o bit de sinal. Esse bit é o bit mais à 
esquerda dos números binários. Para números negativos na base binária, o bit de sinal tem o valor 
1. O restante da quantidade de bits que cada tipo contém representa os bits do valor (figura 3.4).
Figura 3.4: Esquema de números negativos e números positivos de cada tipo.
Para os números positivos, faremos o mesmo: reservamos um bit para representar o bit 
de sinal. No caso dos números positivos na base binária, o bit de sinal possui o valor 0. O 
restante da quantidade de bits que cada tipo contém representa os bits do valor (figura 3.4).
www.grancursosonline.com.br
34
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Vamos explicar a quantidade de bits do tipo byte. O tipo byte possui oito bits de 
representação:
• um bit de sinal para informar que o valor é negativo;
• sete bits para representar o valor;
• um bit de sinal para informar que o valor é positivo; e
• sete bits para representar o valor;
Para o restante do grupo BSIL, temos:
• short, 16 bits de representação:
 – Sendo 1 para bit de sinal e 15 para representar o valor.
• int, 32 bits de representação:
 – Sendo 1 para bit de sinal e 31 para representar o valor.
• long, 64 bits de representação:
 – Sendo 1 para bit de sinal e 63 para representaro valor.
3.2.4. Intervalos dos tipos numéricos integrais (limites negativo e positivo)
Quais são os valores limites negativo e positivo que cada tipo pode comportar?
Figura 3.5: Esquema de valores limites negativo e positivo que cada tipo pode comportar.
www.grancursosonline.com.br
35
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Explicando o esquema da figura 3.5:
• Primeiro, temos a coluna do BSIL;
• A segunda informará quantos bits cada tipo comporta;
• A terceira coluna informa o valor do limite inferior do tipo;
 – É calculado pela fórmula -2(quantidade de bits que representa os valores).
• A quarta informa o valor do limite superior do tipo;
 – É calculado pela fórmula 2(quantidade de bits que representa os valores) -1.
O tipo byte, por exemplo, comporta oito bits de informação, então:
• O menor valor negativo é -27 (-128);
 – Sete, porque dos oito bits, o primeiro bit representa o sinal do número;
• O maior valor positivo é 27 - 1 (127);
 – Sete, porque dos oito bits, o primeiro bit representa o sinal do número.
ATENÇÃO
Para o cálculo do valor do limite positivo, usamos a fórmula 2(quantidade de bits que representa os valores) 
- 1. Essa subtração acontece porque o valor 0 (zero) faz parte dos valores positivos. Por 
isso, uma variável do tipo byte, por exemplo, pode receber de -128 a 127. São 128 valores 
negativos (-128 a -1) e 128 valores positivos (de 0 a 127).
Para o restante do grupo BSIL, faremos a mesma coisa.
3.2.5. Intervalos dos tipos numéricos integrais (intervalo total)
Com tudo o que vimos, falta apenas sabermos o intervalo total de cada tipo numérico 
integral. Esse esquema será fácil porque já entendemos os esquemas anteriores.
www.grancursosonline.com.br
36
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 3.6: Esquema do intervalo total de cada tipo.
Iniciando pelo tipo byte, temos (figura 3.6):
• No lado negativo, de -128 a -1;
 – Ou seja, temos 128 valores negativos.
• No lado positivo, de 0 a 127;
 – Ou seja, temos também 128 valores positivos.
Frisando, 0 está no lado dos positivos, por isso, no cálculo do valor do limite supe-
rior há um -1.
Ao todo, uma variável do tipo byte pode receber 256 (128 negativos e 128 positivos) valo-
res únicos diferentes no decorrer da execução de um programa.
Agora é explicar os outros tipos do grupo BSIL:
• Para o tipo short:
 – O valor limite negativo é -32.768;
 – O valor limite positivo é 32.767;
 – Temos então 65.536 valores diferentes para uma variável desse tipo.
• Para o tipo int:
 – O valor limite negativo é -2 bilhões e final 648;
 – O valor limite positivo é 2 bilhões e final 647;
 – Temos então 4 bilhões e alguma coisa de valores diferentes para uma variável 
desse tipo.
www.grancursosonline.com.br
37
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
• Para o tipo long:
 – O valor limite negativo é -9 lá vai pedra e final 808;
 – O valor limite positivo é 9 lá vai pedra e final 807;
 – Temos então um número grande para dedéu de valores diferentes para uma vari-
ável desse tipo.
3.2.6. Simplificando a tabela de tipos primitivos
• Quantos são os tipos primitivos?
 – Oito tipos primitivos.
• Quais são os tipos primitivos?
 – BSIL: byte, short, int e long; e
 – BCFD: boolean, char, float e double.
• Intervalos dos tipos numéricos integrais BSIL (exceto char): 1.329.
• O tipo boolean representa um bit de informação.
 – Mas seu tamanho não é precisamente definido.
• O tipo char também é um tipo numérico integral.
3.2.7. Inicialização das variáveis
Ao declarar com algum tipo primitivo, as variáveis de escopo de classe (variáveis de instân-
cia e variáveis estáticas) são inicializadas automaticamente com valores padrões desses tipos:
• 0 (zero); ou
• false.
As variáveis locais necessitam ser explicitamente inicializadas. Se as utilizarmos sem 
serem inicializadas, ocorrerá um erro de compilação.
DIRETO DO CONCURSO
8. (FGV/2022/TJ/TO/TÉCNICO JUDICIÁRIO/INFORMÁTICA) Na linguagem Java, o item 
que NÃO é parte dos tipos de dados (data types) primitivos é:
a. boolean.
b. decimal.
c. double.
d. long.
e. short.
www.grancursosonline.com.br
38
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
Quantos e quais são os tipos primitivos da linguagem Java: são oito tipos primitivos:
• BSIL: byte, short, int e long; e
• BCFD: boolean, char, float e double.
O único tipo citado na questão que não faz parte do BSIL BCFD é decimal. Portanto, a letra 
“b” é o nosso gabarito.
9. (FGV/2015/PGE/RO/ANALISTA DA PROCURADORIA/ANALISTA DE SISTEMAS – 
DESENVOLVIMENTO) São tipos primitivos na linguagem de programação Java:
a. int, float, double, char, boolean.
b. int, double, string, char, boolean.
c. integer, real, byte, char, boolean.
d. byte, word, short, integer, char.
e. int, real, char, string, boolean.
COMENTÁRIO
Quantos e quais são os tipos primitivos da linguagem Java: são oito tipos primitivos:
• BSIL: byte, short, int e long; e
• BCFD: boolean, char, float e double.
A letra “a” foi a única que trouxe um subconjunto correto dos tipos primitivos da linguagem 
Java: int, float, double, char, boolean.
string, integer, real e word não são tipos primitivos dessa linguagem. Esses tipos foram 
citados pelas outras alternativas da questão.
www.grancursosonline.com.br
39
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
4. OPERADORES
4.1. Operadores aritméticos
4.1.1. Visão geral
Temos os seguintes operadores aritméticos (figura 4.1):
• Adição +;
• Subtração -;
• Multiplicação *;
• Divisão /; e
• Módulo ou resto da divisão %.
Figura 4.1: Operadores aritméticos.
Tabela 4.1: Exemplos do uso dos operadores aritméticos.
Operador Nome Exemplo
+ Adição x + y
- Subtração x – y
* Multiplicação x * y
/ Divisão x / y
% Módulo ou resto da divisão x % y
www.grancursosonline.com.br
40
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
ATENÇÃO
Na linguagem Java, não há um operador de exponenciação. Para essa operação, utiliza-
mos o método pow() da classe Math (Math.pow(x, y).
Exemplo da operação de exponenciação em Java:
int x = 2;
int y = 3;
System.out.println(Math.pow(x, y)); // 8.0
Esses operadores são bem tranquilos de ser aplicados, porém, há alguns detalhes que 
precisamos estudar. É o que veremos nos próximos tópicos.
4.1.2. Tipos dos resultados das operações aritméticas
Antes de vermos detalhes de alguns operadores, é importante entendermos os tipos dos 
resultados das operações aritméticas (tabela 4.2).
De acordo com a tabela 4.2, temos:
• O tipo do resultado é int quando os dois operadores são dos tipos byte, short e int.
• O tipo do resultado é long quando:
 – pelo menos um operador for do tipo long; e
 – o outro for um tipo menos preciso.
• O tipo do resultado é float quando:
 – pelo menos um operador for do tipo float; e
 – o outro for um tipo menos preciso.
• O tipo do resultado é doublé quando:
 – pelo menos um operador for do tipo doublé; e
 – o outro for um tipo menos preciso.
www.grancursosonline.com.br
41
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Tabela 4.2: Resumo da descrição das fases de uma aplicação Java.
Tipo do operando 1 Tipo do operando 2 Tipo de resultado da operação
byte byte int
short short int
int int int
Pelo menos um deles é do tipo long e o outro é 
do mesmo tipo ou de um tipo menos preciso. long
Pelo menos um deles é do tipo float e o outro é 
do mesmo tipo ou de um tipo menos preciso. float
Pelo menos um deles é do tipo double e o outro é 
do mesmo tipo ou de um tipo menos preciso. double
Exemplo 1:
byte j = 15;
byte l = 20;
byte m = (byte) (j + l);
No Exemplo 1, os dois operandos j e l são do tipo byte e o resultado da operação de 
adição dos dois operandos é do tipo int. Com isso, houve a necessidade de sefazer casting 
para que a variável m do tipo byte pudesse receber o resultado da operação.
Exemplo 2:
int n = 15;
long o = 20;
int p = (int) (n - o);
No Exemplo 2, o operando o é do tipo long e o tipo do operando n é de um tipo menos 
preciso que o primeiro operando. Então o resultado da operação de adição dos dois ope-
randos é do tipo long. A variável p é do tipo int e, para que ela pudesse receber o resultado, 
houve a utilização de casting.
Exemplo 3:
float q = 15.5f;
double r = 20.7;
float s = (float) (q * r);
double é o tipo retorno pela multiplicação da variável q do tipo float pela variável r do tipo 
double. Isso acontece porque um dos operandos é double e outro é de um tipo menos preciso 
do que double, tipo float. Por isso temos de fazer casting para que a variável s do tipo float 
possa receber o resultado da operação.
www.grancursosonline.com.br
42
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Exemplo 4:
byte t = 19;
int u = 3;
double v = t / u;
No Exemplo 4, temos dois operandos: t do tipo byte e u do tipo int. A variável t recebeu o 
valor 19, e a variável u, o valor de 3. Temos também a declaração da variável v do tipo double 
recebendo o resultado da operação de divisão das variáveis t e u. Com isso, v receberá 6.0.
Como ambos os operandos são do grupo dos tipos numéricos integrais, então o resultado 
da divisão no exemplo é do tipo int 6, mas a variável v é do tipo double, então haverá a con-
versão automática de 6 para double (6.0).
Exemplo 5:
double w = 19.0;
int x = 3;
double y = w / x;
No exemplo 5, temos dois operandos w e x, sendo a variável w do tipo double e a variável x 
do tipo int. Com isso, o resultado da operação de divisão entre essas variáveis será do tipo double 
(6.333333333333333). Como a variável y é do tipo double, então ela vai receber esse valor.
4.1.3. Operador de adição +
O operador de adição + possui duas funções (figura 4.2):
• Função 1: adição entre tipos numéricos; e
• Função 2: concatenação de strings.
Como concatenador de strings, basta que um dos operandos seja do tipo String para que 
o resultado da operação seja uma string concatenada.
ATENÇÃO
Se forem usados vários operadores de adição e vários operandos, a partir do primeiro 
operando do tipo String, terão a função de concatenar strings o operador de adição antes 
desse operando e todos os operadores de adição após ele.
Exemplo:
String z = 15 + 8 + “Kal-El” + 15 + 8;
// z terá valor de “23Kal-El158”
// 15 + 8 antes do operando “Kal-El” foram somados (23)
// 15 + 8 depois do operando “Kal-El” foram concatenados (158)
www.grancursosonline.com.br
43
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 4.2: Funções do operador de adição +.
4.1.4. Operador de divisão /
O operador de divisão / representa a divisão de:
• números inteiros; e
• números de ponto flutuante.
No caso de divisão de números inteiros, ou seja, quando os operandos são do tipo do 
grupo BSIL (byte, short, int e long):
• o tipo do resultado é int quando os dois operandos são dos tipos byte, short e int;
• o tipo do resultado é long quando:
 – pelo menos um dos operandos for do tipo long; e
 – o outro for de um tipo igual ou menos preciso.
Exemplo:
int x = 15 / 2; // x receberá o valor 7
ATENÇÃO
Em uma divisão de inteiros, quando o divisor for 0, leva-se a uma exceção ArithmeticException, 
pois não há divisão de inteiros por zero!
No caso de divisão de números de ponto flutuante:
• O tipo do resultado é float quando:
 – pelo menos um dos operandos for do tipo float; e
 – p outro for de um tipo igual ou menos preciso.
• O tipo do resultado é double quando:
 – pelo menos um dos operandos for do tipo double; e
 – o outro for de um tipo igual ou menos preciso.
www.grancursosonline.com.br
44
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Exemplo:
double y = 15 / 2.0; // y terá valor 7.5.
Quando da divisão de (sendo um deles dos tipos FD float/double):
• número positivo por 0, produz-se resultado infinito positivo;
• número negativo por 0, produz-se resultado infinito negativo; e
• 0 por 0, produz-se NaN (not a number).
4.1.5. Diferença entre os operadores de divisão / e módulo % entre dois números 
inteiros / O operador de divisão / representa o quociente da divisão entre dois núme-
ros inteiros, enquanto o operador módulo % representa o resto da divisão entre dois 
números inteiros (figura 4.3).
Figura 4.3: Operadores de divisão / e módulo % entre dois números inteiros.
DIRETO DO CONCURSO
10. (FGV/2015/TJBA/ANALISTA JUDICIÁRIO/TECNOLOGIA DA INFORMAÇÃO) Observe 
o seguinte trecho de código Java:
www.grancursosonline.com.br
45
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
O código, quando executado, irá imprimir:
a. 2.0
b. 1.5
c. 1.0
d. 0
e. um erro de operação
COMENTÁRIO
Organizando o código da questão, temos:
public class Main {
private static final int constReagente = 5;
public static float quantReagente(int quantMassa, int minutos) 
{
return quantMassa / (constReagente * minutos);
}
public static void main(String[] args) {
System.out.println(quantReagente(15, 2));
}
}
Resultado da execução do código:
1.0
Antes de comentarmos o código da questão, é importante citar que a classe Main é uma 
classe executável por ter um método especial: método main(). Sua assinatura é:
public static void main(String[] args) {... }
É um método público, estático, que não retorna nada e tem um parâmetro args, que é um 
array de strings.
99% das questões de concursos que contêm código Java apresentam uma classe 
executável.
Compilamos nossas classes Java (arquivos texto de extensão.java) com um compi-
lador Java:
javac *.java
O resultado da compilação das classes Java são arquivos de extensão .class que contêm 
bytecodes.
Voltando aos comentários do código da questão, a classe Main possui:
• Um atributo constReagente.
 – É um atributo privado, estático, final e do tipo int.
www.grancursosonline.com.br
46
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
 – Ele é inicializado com o valor 5.
 – Esse atributo tem escopo de classe.
• Dois métodos:
 – método main(); e
 – método quantReagente().
O método quantReagente():
• é um método público;
• retorna um valor float; e
• possui dois parâmetros formais do tipo int: quantMassa e minutos.
Esse método retorna o resultado da divisão da quantMassa dividido pelo resultado da mul-
tiplicação do atributo constReagente pelo parâmetro minutos.
Como a operação de multiplicação está entre parênteses, então ela tem de ser aplicada 
primeiro, e depois se executa a operação de divisão.
Dentro do método main(), há a impressão no console do usuário (System.out.println()) do 
resultado retornado pelo método quantReagente() passando os parâmetro reais 15 e 2.
Ao ser chamado com esses valores de parâmetros reais, o método quantReagente() vai 
retornar o valor 1.0:
• quantMassa recebe o valor 15;
• minutos recebe o valor 2;
• constReagente, como vimos, foi inicializado com o valor 5;
• A operação de multiplicação (constReagente * minutos) retorna o valor 10;
• A operação de divisão (quantMassa / 10) retorna o valor 1;
 – 15 / 10 = 1, pois é uma operação de divisão de inteiros.
• O método retorna o valor 1.0.
 – Como o método retorna um valor do tipo float, o resultado da operação de divisão de 
inteiros será convertido automaticamente para float (1.0).
Portanto, a letra “c” é o gabarito.
4.2. Operadores unários
4.2.1. Visão geral
São unários porque são aplicados em apenas um operando.
Temos os seguintes operadores aritméticos (figura 4.4):
• Mais +;
 – Indica valor positivo.
 – Não é necessário usá-lo em números positivos.
www.grancursosonline.com.br
47
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
• Menos -;
 – Nega uma expressão ou um número.
• Incremento ++;– Incrementa um valor em um.
• Decremento --;
 – Diminui um valor em um.
• Complemento lógico !;
 – Inverte o valor de um boolean.
Figura 4.4: Operadores unários.
Tabela 4.3: Exemplos do uso dos operadores unários.
Operador Nome Exemplo
+ Mais +x
- Menos -x
++ Incremento ++x ou y++
-- Decremento --x ou y--
! Complemento !x
www.grancursosonline.com.br
48
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Exemplo:
int x = 15;
System.out.println(“x:” + ++x); // O resultado gerado é x: 16.
Nós nos focaremos nos operadores de incremento e decremento, pois são os operadores 
mais cobrados deste tipo.
4.2.2. Operadores de incremento e decremento
O operador de incremento ++ incrementa um valor em um. Por exemplo, se temos uma 
variável x do tipo int, então x++ é como se fosse x = x + 1.
Já o operador de decremento --, por sua vez, diminui um valor em um. Se há uma vari-
ável y do tipo int, y-- equivale a y = y – 1.
Tanto o operador de incremento quanto o de decremento podem ser:
• pré-fixados: quando são aplicados antes de uma variável; ou
• pós-fixados: quando são aplicados depois de uma variável.
Quando esses operadores são pré-fixados, avalia-se o valor incrementado ou decre-
mentado de uma variável. O valor trabalhado já é o incrementado ou decrementado.
Exemplo:
int x = 15, y = 15;
System.out.println(“x:” + ++x); // O resultado gerado é x: 16.
System.out.println(“y:” + --y); // O resultado gerado é y: 14.
No código acima, o valor impresso da variável x é o valor já incrementado e o valor 
impresso da variável y é o valor decrementado.
Quando esses operadores são pós-fixados, avalia-se o valor original, ou seja, o valor traba-
lhado é o valor original de uma variável. Depois o valor da variável é incrementado ou decrementado.
Exemplo:
int x = 15;
System.out.println(“x:” + x++); // O resultado gerado é x: 15.
System.out.println(“x:” + x); // O resultado gerado é x: 16.
Na primeira impressão do valor da variável x, o valor dessa variável é o valor original (15), depois 
a variável é incrementada. Depois, na segunda impressão, o valor incrementado é impresso (16).
ATENÇÃO
É bem importante entender os operadores de incremento e decremento, pois são usados 
constantemente em questões de concursos que envolvem a linguagem Java. O enten-
dimento desses operadores pré-fixados e pós-fixados é de suma importância. Há várias 
questões que trabalham essas diferenças, quando se avalia o valor incrementado (decre-
mentado) de uma variável ou quando se avalia o valor original dessa variável.
www.grancursosonline.com.br
49
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
DIRETO DO CONCURSO
11. (FGV/2010/BADESC/ANALISTA DE SISTEMAS – DESENVOLVIMENTO DE SISTE-
MAS) Observe o código em Java a seguir, em que se pode verificar a aplicação dos 
operadores de pré-decremento e pós-decremento.
Após a execução do código, as variáveis m e n exibirão, respectivamente, os valores:
a. 42 e 41.
b. 42 e 42.
c. 42 e 43.
d. 43 e 42.
e. 43 e 43.
COMENTÁRIO
Organizando o código da questão, temos:
public class Decrementa {
 public static void main(String[] args) {
 // m não foi inicializada e n = 44;
 int m, n = 44;
 // m = 43 e n = 43.
 m = --n;
 // m = 43 e n = 42.
 m = n--;
 System.out.println(m);
 System.out.println(n);
 }
}
www.grancursosonline.com.br
50
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Resultado da execução do código:
43
42
A classe Decrementa é uma classe executável por ter o método main().
O método main() possui duas variáveis locais do int: m e n.
A variável n é inicializada com o valor 44 no momento de sua declaração. A variável m não 
é inicializada.
Na linha m = --n, a variável m recebe o valor já decrementado da variável n, pois foi usado 
o operador de decremento pré-fixado. Ou seja, a variável m recebe o valor 43 e a variável 
n é atualizada para 43.
Já na linha m = n--, a variável m recebe o valor atual da variável n (valor 43) e apenas de-
pois a variável n é atualizada para 42. Isso acontece porque agora foi usado o operador de 
decremento pós-fixado.
No final do método main(), temos:
• System.out.println(m): imprime o valor 43; e
• System.out.println(n): imprime o valor 42.
Com tudo isso, o gabarito da questão é a letra “d”.
4.3. Operadores de igualdade e relacionais
4.3.1. Visão geral
Figura 4.5: Operadores de igualdade e relacionais.
O tipo do resultado da operação é boolean.
www.grancursosonline.com.br
51
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Tabela 4.4: Exemplos do uso dos operadores de igualdade e relacionais.
Operador Nome Exemplo
== Igual a x == y
!= Diferente de x!= y
> Maior que x > y
< Menor que x < y
>= Maior que ou igual a x >= y
<= Menor que ou igual a x <= y
instanceof É instância de x instanceof y
Exemplo:
boolean x = 1 < 2; // x recebe true porque 1 é menor que 2
4.3.2. Operador instanceof
É um operador de comparação de tipo. Ele testa se um objeto é instância de:
• uma classe;
• uma subclasse; ou
• uma classe que implementa uma interface.
Sintaxe:
objeto instanceof Classe
Figura 4.6: Esquema para o entendimento do operador instanceof.
www.grancursosonline.com.br
52
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Explicando o esquema da figura 4.6, vamos supor que:
• Veículo seja uma superclasse;
• Carro seja uma subclasse da classe Veículo; e
• acelerar seja uma interface implementada pela classe Carro.
No esquema, temos ainda dois objetos:
• Objeto carro da classe Carro:
 – Carro carro = new Carro();
• Objeto veículo da classe Veículo:
 – Veículo veículo = new Veículo();
Supondo que o objeto veiculo é instância da classe Veículo:
• veiculo instanceof Veículo:
 – Retorna true porque o objeto é instância dessa classe.
• veiculo instanceof Carro:
 – Retorna false porque o objeto não é instância dessa classe.
• veículo instanceof Acelerar:
 – retorna false porque a classe do qual o objeto é instância não implementa essa 
interface.
Supondo que o objeto carro é instância da classe Carro:
• carro instanceof Carro:
 – Retorna true porque o objeto é instância dessa classe.
• carro instanceof Veículo:
 – Retorna true porque a classe do qual o objeto é instância estende dessa interface.
• carro instanceof Acelerar:
 – Retorna true porque a classe do qual o objeto é instância implementa essa interface.
ATENÇÃO
Estudaremos objetos, classes e interfaces em uma próxima aula.
Mais um exemplo com o operador instanceof:
public class Animal {
 public static void main(String[] args) {
 Cat cat = new Cat();
 System.out.println(cat instanceof Animal);
 System.out.println(cat instanceof Cat);
 }
}
class Cat extends Animal { }
www.grancursosonline.com.br
53
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Resultado da execução do código:
true
true
Temos duas classes no exemplo: Animal e Cat, sendo cat subclasse de Animal. No 
método main(), temos uma variável local cat, que é objeto da classe Cat():
• cat instanceof Animal retorna true porque cat é objeto de uma subclasse de Animal, ou 
seja, de Cat.
• cat instanceof Cat retorna true também porque cat é objeto da classe Cat.
DIRETO DO CONCURSO
12. (FGV/2017/IBGE/ANALISTA CENSITÁRIO/ANÁLISE DE SISTEMAS/DESENVOLVI-
MENTO DE APLICAÇÕES) O operador instanceof em Java:
I – aplica-se a operandos que sejam referências para objetos;
II – aplica-se a qualquer tipo de operando;
III – produz resultado do tipo boolean.
Está correto o que se afirma em:
a. somente I e II.
b. somente I e III.
c. somente II e III.
d. somente III.
e. I, II e III.
COMENTÁRIO
Comentando cada item, temos:
• Item I: o operador instanceof em Java aplica-se a operandos que sejam referências 
para objetos.
 – Certo. O operador instanceof é um operador de comparação de tipo. Ele testa se 
um objetoé instância de uma classe, uma subclasse ou uma classe que implementa 
uma interface.
• Item II: o operador instanceof em Java aplica-se a qualquer tipo de operando.
 – Errado. Não é para qualquer tipo de operando.
• Item III: o operador instanceof em Java produz resultado do tipo boolean.
 – Certo. O operador instanceof é um dos operadores de igualdade e relacionais e o 
tipo do resultado da operação é boolean.
Portanto, apenas o item II está errado, fazendo a letra “b” ser o gabarito da questão.
www.grancursosonline.com.br
54
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
4.4. Operadores de bits
4.4.1. Visão geral
Figura 1.7: Operadores de bits.
Tabela 4.5: Exemplos do uso dos operadores de bits.
Operador Nome Exemplo
~ Complemento ~x
& AND x & y
| OR x | y
^ XOR x ^ y
<< Deslocamento à esquerda x << y
>> Deslocamento à direita x >> y
>>> Deslocamento à direita sem sinal x >>> y
Todos esses operadores trabalham em nível de bits e com operandos numéricos. Para 
fazermos as operações de bits, primeiro, devemos transformar os operandos da base deci-
mal para a base binária e depois aplicar as operações bit a bit para os operandos.
www.grancursosonline.com.br
55
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
ATENÇÃO
Para melhor compreensão do uso desses operadores, sugiro que estude números binários 
e Notação de Complemento de Dois. Esses dois tópicos são importantes para entender os 
resultados das operações com operadores de bits.
4.4.2. Operador de complemento ~
O operador de complemento ~ inverte os bits de um número.
Exemplo:
byte x = ~20; // x recebe -21.
A variável do tipo byte x recebe o complemento do valor 20. Com isso, x recebe -21.
Tabela 4.6: Visualizando o resultado da operação com o operador de complemento.
Valor inicial 128 64 32 16 8 4 2 1 Valor final
20 0 0 0 1 0 1 0 0 20
~20 1 1 1 0 1 0 1 1 -21
De acordo com a tabela 4.6, temos:
• Na primeira linha, temos os bits valor 20.
• Na segunda linha, aplicamos o operador complemento no valor 20.
 – Com isso, todos os bits foram invertidos.
 – O valor encontrado depois dessa operação é -21.
Como chegamos ao valor -21? A linguagem Java utiliza a notação de complemento de 
dois. Então faremos o seguinte:
• O tipo byte possui oito bits de representação.
• A coluna 128 representa o bit de sinal;
 – É o bit mais à esquerda.
 – Como vemos aqui é igual a 1, com isso, sabemos que o número é negativo.
• Diminuímos 1 do valor;
• Invertemos os bits;
• Transformamos o número de base 2 para base 10;
• Como chegamos ao valor 21, então se conclui que 11101011 na base 2 é -21 na base 10.
www.grancursosonline.com.br
56
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
4.4.3. Operadores de AND &, OR | e XOR ^
Os operadores AND, OR e XOR operam sobre literais inteiros.
Lembrando que temos dois tipos de literais inteiros:
• int;
 – sendo esse o padrão; e
• long.
Como os operadores AND &, OR | e XOR ^ funcionam?
• Para o AND, o resultado é um bit 1, se TODOS forem 1;
• Para o OR, o resultado é um bit 1, se PELO MENOS um bit for 1; e
• Para o XOR, o resultado é um bit 1, se os bits forem DIFERENTES.
ATENÇÃO
Caso os operandos sejam booleanos, o resultado será idêntico ao obtido com operadores 
AND condicional e OR condicional, porém sem curto-circuito, ou seja, todos os operandos 
serão avaliados, mesmo sem necessidade.
Os operadores condicionais AND && e OR || possuem dois símbolos cada. Já os de bits 
AND & e OR | possuem apenas um cada.
Exemplos:
byte x = 93 & -21; // x recebe 73.
byte y = 93 | -21; // x recebe -1.
byte z = 93 ^ -21; // x recebe -74.
Tabela 4.7: Visualizando o resultado das operações com os operadores AND &, OR | e XOR ^.
Valor inicial 128 64 32 16 8 4 2 1 Valor final
93 0 1 0 1 1 1 0 1 93
-21 1 1 1 0 1 0 1 1 -21
& 0 1 0 0 1 0 0 1 73
| 1 1 1 1 1 1 1 1 -1
^ 1 0 1 1 0 1 1 0 -74
www.grancursosonline.com.br
57
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
De acordo com a tabela 4.7, transformamos os valores 93 e -21 para a base binária e 
depois aplicamos os operadores. Com o resultado na base binária, transformamos para a 
base decimal e encontramos o resultado de cada operação:
• 93 AND -21 é 73;
• 93 OR -21 é -1;
• 93 XOR -21 é 74.
DIRETO DO CONCURSO
13. (FGV/2021/IMBEL/SUPERVISOR/TECNOLOGIA DE INFORMAÇÃO) Com relação aos 
operadores bitwise do Java, considere os valores binários
a = 00111100
b = 00001101
Os valores resultantes das operações a&b e a|b são, respectivamente,
a. 00011100 e 11111101
b. 00001100 e 00111101
c. 00001111 e 00111111
d. 11001110 e 00001100
e. 01101100 e 00100101
COMENTÁRIO
A questão pede o resultado de a & b e a | b. Como as variáveis a e b já estão na base bi-
nária, basta aplicar os operadores bit a bit e saber o resultado de cada operação.
Variável e operação 128 64 32 16 8 4 2 1
a 0 0 1 1 1 1 0 0
b 0 0 0 0 1 1 0 1
& 0 0 0 0 1 1 0 0
| 0 0 1 1 1 1 0 1
^ 0 0 1 1 0 0 0 1
De acordo com a tabela acima, temos:
a & b = 000001100
a | b = 00111101
Com isso, a letra “b” é o nosso gabarito.
Coloquei também o resultado com XOR ^ apenas para treinarmos:
a ^ b = 00110001
www.grancursosonline.com.br
58
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
4.4.4. Operadores de descolamento
Temos os operadores de deslocamento:
• À esquerda <<;
• À direita >>; e
• À direita sem sinal >>>.
Eles também operam sobre literais inteiros.
Lembrando que temos dois tipos dos literais inteiros:
• int;
 – sendo esse o padrão; e
• long.
ATENÇÃO
Para operações com os operadores de deslocamento, os tipos de menor precisão (byte 
e short) são convertidos a int antes de realizar operação. É importante lembrar-se disso 
quando for resolver questões com esses operadores.
4.4.5. Operador de descolamento à esquerda <<
O operador de descolamento à esquerda <<:
• Desloca para esquerda os bits do primeiro operando pelo número de bits especificado 
pelo segundo operando;
• Preenche na direita com zero.
Exemplo:
byte x = 13 << 2; // x recebe 52.
// 13: 00000000000000000000000000001101
// 52: 00000000000000000000000000110100
byte y = -21 << 2; // y recebe -84.
// –21: 11111111111111111111111111101011
// –84: 11111111111111111111111110101100
No exemplo acima, a variável do tipo byte x recebe o resultado da operação do desloca-
mento à esquerda do valor 13 em duas casas:
• x então recebe 52;
• Temos o valor 13 na base 2 e no tipo int (em 32 bits);
 – Os tipos byte e short são convertidos em int primeiro;
 – 00000000000000000000000000001101;
www.grancursosonline.com.br
59
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
• Deslocam-se duas casas para a esquerda;
 – Havendo o preenchimento de zeros na direita (o que está destacado no sublinhado 
no valor 52 na base binária);
 – 00000000000000000000000000110100;
• O valor final encontrado foi 52 na base binária:
 – Como estamos trabalhando o tipo byte, então ficaremos apenas com os oito primei-
ros bits da direita para a esquerda;
 – O oitavo bit, da direita para esquerda, é o bit de sinal do tipo byte;
 – 110100.
Ainda no exemplo, a variável do tipo byte y recebe o resultado da operação do desloca-
mento à esquerda do valor -21 em 2 casas:
• y então recebe -84;
• Temos o valor -21 na base 2 e no tipo int (em 32 bits);
 – 11111111111111111111111111101011;
• Deslocam-se duas casas para a esquerda;
 – Havendo o preenchimento de zeros na direita (o que está destacado no sublinhado 
no valor -84 na base binária);
 – 11111111111111111111111110101100;
• O valor final encontrado foi -84 na base 2:
 – Como estamos trabalhando o tipo byte, então ficaremos apenas com os oito primei-
ros bits da direita para a esquerda;
 – O oitavo bit, da direita para esquerda, é o bit de sinal do tipo byte;
 – 10101100.
Tabela 4.8: Visualizando o resultado das operaçõescom o operador de deslocamento à 
esquerda <<.
Valor inicial 128 64 32 16 8 4 2 1 Valor final
13 0 0 0 0 1 1 0 1 13
13 << 2 0 0 1 1 0 1 0 0 52
-21 1 1 1 0 1 0 1 1 -21
-21 << 2 1 0 1 0 1 1 0 0 -84
www.grancursosonline.com.br
60
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
4.4.6. Operador de descolamento à direta >>
O operador de descolamento à direta >>:
• Desloca para direita os bits do primeiro operando pelo número de bits especificado 
pelo segundo operando; e
• Preenche na esquerda com zero ou um;
 – Dependendo do bit de sinal.
Exemplo:
byte x = 13 >> 2; // x recebe 3.
// 13: 00000000000000000000000000001101
// 03: 00000000000000000000000000000011
byte y = -21 >> 2; // y recebe -6.
// –21: 11111111111111111111111111101011
// –06: 11111111111111111111111111111010
No exemplo acima, a variável do tipo byte x recebe o resultado da operação do desloca-
mento à direita do valor 13 em duas casas:
• x então recebe 3;
• Temos o valor 13 na base 2 e no tipo int (em 32 bits);
 – Os tipos byte e short são convertidos em int primeiro;
 – 00000000000000000000000000001101;
 – O bit de sinal (o bit mais à esquerda) é 0.
• Deslocam-se duas casas para a direita;
 – Havendo o preenchimento de zeros na esquerda (o que está destacado no subli-
nhado no valor 3 na base binária);
 – 00000000000000000000000000000011;
 – Foi preenchido com 0 na esquerda porque o bit de sinal é 0.
• O valor final encontrado foi 3 na base 2:
 – Como estamos trabalhando o tipo byte, então ficaremos apenas com os oito primei-
ros bits da direita para a esquerda;
 – O oitavo bit, da direita para esquerda, é o bit de sinal do tipo byte;
 – 00000011.
www.grancursosonline.com.br
61
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Tabela 4.9: Visualizando o resultado das operações com o operador de deslocamento 
à direita >>.
Valor inicial 128 64 32 16 8 4 2 1 Valor final
13 0 0 0 0 1 1 0 1 13
13 >> 2 0 0 0 0 0 0 1 1 3
-21 1 1 1 0 1 0 1 1 -21
-21 >> 2 1 1 1 1 1 0 1 0 -6
Ainda no exemplo, a variável do tipo byte y recebe o resultado da operação do desloca-
mento à direita do valor -21 em duas casas;
• y então recebe -6;
• Temos o valor -21 na base 2 e no tipo int (em 32 bits);
 – 11111111111111111111111111101011;
 – O bit de sinal (o bit mais à esquerda) é 1.
• Deslocam-se duas casas para a direita;
 – Havendo o preenchimento de uns na direita (o que está destacado no sublinhado no 
valor -6 na base binária);
 – 11111111111111111111111111111010;
 – Foi preenchido com 1 na esquerda porque o bit de sinal é 1.
• O valor final encontrado foi -6 na base 2:
 – Como estamos trabalhando o tipo byte, então ficaremos apenas com os oito primei-
ros bits da direita para a esquerda;
 – O oitavo bit, da direita para esquerda, é o bit de sinal do tipo byte;
 – 11111010.
4.4.7. Operador de descolamento à direta sem sinal >>>
O operador de descolamento à direta sem sinal >>>:
• Desloca para direita os bits do primeiro operando pelo número de bits especificado 
pelo segundo operando; e
• Preenche na esquerda com zero;
 – Independentemente do bit de sinal.
www.grancursosonline.com.br
62
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
ATENÇÃO
O operador de deslocamento à direita tem dois sinais “maior que”: >>. Já o operador de 
deslocamento à direita sem sinal possui três sinais maior que: >>>.
Exemplo:
byte x = 13 >>> 2; // x recebe 3.
// 13: 00000000000000000000000000001101
// 03: 00000000000000000000000000000011
byte y = (byte) -21 >>> 2; // y recebe -6.
// –21: 11111111111111111111111111101011
// 1073741818 (byte, -6): 00111111111111111111111111111010
No exemplo acima, a variável do tipo byte x recebe o resultado da operação do desloca-
mento à direita sem sinal do valor 13 em duas casas:
• x então recebe 3;
• Temos o valor 13 na base 2 e no tipo int (em 32 bits);
 – Os tipos byte e short são convertidos em int primeiro;
 – 00000000000000000000000000001101.
• Deslocam-se duas casas para a direita;
 – Havendo o preenchimento de zeros na esquerda, independentemente do bit de sinal 
(o que está destacado no sublinhado no valor 3 na base binária);
 – 00000000000000000000000000000011.
• O valor final encontrado foi 3 na base 2:
 – Como estamos trabalhando o tipo byte, então ficaremos apenas com os oito primei-
ros bits da direita para a esquerda;
 – O oitavo bit, da direita para esquerda, é o bit de sinal do tipo byte.
Ainda no exemplo, a variável do tipo byte y recebe o resultado da operação do desloca-
mento à direita sem sinal do valor -21 em duas casas;
• y então recebe -6;
• Temos o valor -21 na base 2 e no tipo int (em 32 bits);
 – 11111111111111111111111111101011.
• Deslocam-se duas casas para a direita;
 – Havendo o preenchimento de zeros na esquerda, independentemente do bit de sinal 
(o que está destacado no sublinhado no valor 1073741818 na base binária);
www.grancursosonline.com.br
63
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
 – 00111111111111111111111111111010;
 – Se houve o preenchimento com zeros na esquerda, então o bit de sinal agora é zero, 
indicando que o resultado positivo;
 – O número gerado então foi um grande número: 1 bilhão e alguma coisa.
• O valor final encontrado foi -6 na base 2:
 – Como estamos trabalhando o tipo byte, então ficaremos apenas com os oito primei-
ros bits da direita para a esquerda;
 – O oitavo bit, da direita para esquerda, é o bit de sinal do tipo byte;
 – 11111010.
Nessa última operação, tivemos de fazer o casting, pois o valor encontrado em int é um 
número positivo maior que uma variável do tipo byte por comportar:
byte y = (byte) -21 >>> 2;
Tabela 4.10: Visualizando o resultado das operações com o operador de deslocamento 
à direita sem sinal >>>.
Valor inicial 128 64 32 16 8 4 2 1 Valor final
13 0 0 0 0 1 1 0 1 13
13 >>> 2 0 0 0 0 0 0 1 1 3
-21 1 1 1 0 1 0 1 1 -21
-21 >>> 2 1 1 1 1 1 0 1 0 -6
Para finalizarmos, explicarei uma situação que acontece com as operações de desloca-
mento à direita sem sinal.
Veja o seguinte exemplo de operação de deslocamento à direita sem sinal de 32 casas, 
sendo seu resultado armazenado em uma variável do tipo int:
int x = -1 >>> 32;
// Primeiro operando -1:
// 1111111111111111111111111111111
// Resultado da operação -1:
// 1111111111111111111111111111111
No exemplo acima, a variável do tipo int x recebe o resultado da operação do desloca-
mento à direita sem sinal do valor -1 em 32 casas:
• x vai receber o valor -1;
• Temos o valor -1 na base 2 e no tipo int (em 32 bits);
 – 1111111111111111111111111111111;
www.grancursosonline.com.br
64
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
• Deslocam-se 32 casas para a direita;
 – Porém, como o número de casas para se deslocar para direita (segundo operando) é 
a quantidade total de posições do tipo int (32 posições), então haverá como se fosse 
um deslocamento circular e o resultado será novamente o valor -1:
 – 1111111111111111111111111111111.
O interessante é que deveria haver um preenchimento na esquerda com 0, o que poderia 
como resultado o valor 0 na base decimal para a variável x. Mas não é isso que acontece.
Outros exemplos:
int a = -2 >>> 32; // -2
int b = -5 >>> 32; // -5
int c = -45 >>> 32; // -45
Conclusão: qualquer operação com o deslocamento à direita sem sinal o onde o primeiro 
operando é um número negativo e o segundo operando é quantidade de bits que representa 
o tipo int (32) tem como resultado o próprio número negativo.
Essa situação também ocorre quando temos uma variável do tipo long e são deslocadas 
64 casas à direita sem sinal de um número negativo:
long x = -1 >>> 64;
// Primeiro operando -1:
//1111111111111111111111111111111111111111111111111111111111111111
// Resultado da operação -1:
//1111111111111111111111111111111111111111111111111111111111111111
Outros exemplos:long a = -2 >>> 64; // -2
long b = -5 >>> 64; // -5
long c = -45 >>> 64; // -45
ATENÇÃO
Qualquer operação com o deslocamento à direita sem sinal o onde o primeiro operando 
é um número negativo e o segundo operando é quantidade de bits que representa o tipo 
int (32) tem como resultado o próprio número negativo. Isso também vale para o tipo long: 
qualquer operação com o deslocamento à direita sem sinal o onde o primeiro operando é 
um número negativo e o segundo operando é quantidade de bits que representa o tipo long 
(64) tem como resultado o próprio número negativo.
www.grancursosonline.com.br
65
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
DIRETO DO CONCURSO
14. (FGV/2017/ALERJ/ESPECIALISTA LEGISLATIVO/TECNOLOGIA DA INFORMAÇÃO) 
Operadores bit-a-bit permitem a avaliação e a modificação de bits específicos em de-
terminados tipos de dados na linguagem Java. Das expressões a seguir, a que resulta 
em um valor positivo para variável x é:
a. long x = -1; x = x >>> 64.
b. int x = -1; x = x >>> 32.
c. int x = -1; x = x >>> 16.
d. long x = -1; x = x >> 32.
e. int x = -1; x = x >> 32.
COMENTÁRIO
Utilizando cada letra para compor uma linha de código da classe em Java a seguir, temos:
public class Main {
 public static void main(String[] args) {
 long a = -1;
 a = a >>> 64;
 System.out.println(a);
 int b = -1;
 b = b >>> 32;
 System.out.println(b);
 int c = -1;
 c = c >>> 16;
 System.out.println(c);
 long d = -1;
 d = d >> 32;
 System.out.println(d);
 int e = -1;
 e = e >> 32;
 System.out.println(e);
 }
}
Resultado da execução do código:
-1
-1
65535
-1
-1
www.grancursosonline.com.br
66
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
A classe Main é uma classe executável por ter o método main().
A questão pede para saber qual variável terá um valor positivo depois de receber o resul-
tado da operação de deslocamento de bits.
As instruções das letras “a” e “b” caem naquela regra de que qualquer operação com o 
deslocamento à direita sem sinal o onde o primeiro operando é um número negativo e o 
segundo operando é quantidade de bits que representa o tipo int (32) tem como resultado 
o próprio número negativo e qualquer operação com o deslocamento à direita sem sinal o 
em que o primeiro operando é um número negativo e o segundo operando é quantidade de 
bits que representa o tipo long (64) tem como resultado o próprio número negativo.
Então as instruções das alternativas “a” e “b” trazem como resultados -1 e -1, res-
pectivamente.
Agora, analisando as instruções da alternativa “c”:
int c = -1;
c = c >>> 16;
A variável c é do tipo int, ou seja, possui 32 bits de armazenamento de informação. Ela 
recebe o valor -1, que, na base binária, fica:
1111111111111111111111111111111
Depois a variável c recebe o deslocamento à direita sem sinal do seu valor anterior (-1), 
descolado 16 casas e com preenchimento de 0 na esquerda, independentemente do sinal. 
Ou seja, a variável c recebe o seguinte valor na base binária:
00000000000000001111111111111111
Transformando esse valor para base decimal, a variável c, no final, recebe o valor 65.535. 
O que faz essa alternativa ser nosso gabarito.
A letra “d” traz as seguintes instruções:
long d = -1;
d = d >> 32;
A variável d é do tipo long, ou seja, possui 64 bits de armazenamento de informação. Ela 
recebe o valor -1, que na base binária fica:
1111111111111111111111111111111111111111111111111111111111111111
Depois a variável d recebe o deslocamento à direita do seu valor anterior (-1), descolado 
32 casas para direita e com preenchimento de bits 1 na esquerda, pois o operador usado 
na operação respeita o sinal. Ou seja, a variável d recebe o seguinte valor na base binária:
1111111111111111111111111111111111111111111111111111111111111111
Transformando esse valor na base decimal, a variável d recebe o valor -1.
A letra “e” traz as seguintes instruções:
int e = -1;
e = e >> 32;
www.grancursosonline.com.br
67
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
A variável e é do tipo int, ou seja, possui 32 bits de armazenamento de informação. Ela 
recebe o valor -1, que na base binária fica:
1111111111111111111111111111111
Depois a variável e recebe o deslocamento à direita do seu valor anterior (-1), descolado 
32 casas para direita e com preenchimento de bits 1 na esquerda, pois o operador usado 
na operação respeita o sinal. Ou seja, a variável e recebe o seguinte valor na base binária:
1111111111111111111111111111111
Transformando esse valor na base decimal, a variável e recebe o valor -1.
Concluindo, a letra “c” foi a única questão que tem as instruções gerando um valor positivo.
www.grancursosonline.com.br
68
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
5. DECLARAÇÕES DE CONTROLE DE FLUXO
5.1. CONCEITUAÇÃO E VISÃO GERAL
As declarações de controle de fluxo controlam a ordem em que outras instruções serão 
executadas.
Exemplo:
int i = 0;
while (i < 10) {
 …
 i++;
}
Temos as seguintes declarações de controle de fluxo (figura 5.1):
• Estruturas de condição:
 – if-else; e
 – switch;
• Estruturas de repetição:
 – while;
 – do-while; e
 – for;
• Instruções que quebram o controle de fluxo:
 – break;
 – continue; e
 – return.
Figura 5.1: Declarações de controle de fluxo.
www.grancursosonline.com.br
69
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
5.2. ESTRUTURAS DE CONDIÇÃO
5.2.1. if-else
A declaração if é a mais comum dentre todas as declarações de controles de fluxos.
As instruções dentro dela serão executadas se a condição da estrutura for true. Essa 
condição da estrutura deve vir entre parênteses e retornar um valor booleano.
Exemplo:
int x = 15;
if (x <= 20)
 System.out.prinltn(“x <= 20”);
Resultado da execução do código:
x <= 20
A declaração else é opcional. Ela é correspondente com o if mais próximo.
Exemplo:
int x = 15;
if (x <= 15) if (x == 15) y = 0; else y = 1;
No trecho de código acima, a declaração else está correspondendo à declaração if (x == 
15). Organizando melhor o código, temos:
int x = 15;
if (x <= 15)
 if (x == 15)
 y = 0;
 else
 y = 1;
A utilização de chaves é uma boa prática para organizar o código.
Exemplo:
int x = 15;
if (x <= 15) { if (x == 15) y = 0; else y = 1; }
A identação do código melhora ainda mais a visualização do código.
Exemplo:
int x = 15;
if (x <= 15) {
 if (x == 15)
 y = 0;
 else
 y = 1;
}
www.grancursosonline.com.br
70
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
DIRETO DO CONCURSO
15. (FGV/2015/CÂMARA MUNICIPAL DE CARUARU/PE/ANALISTA LEGISLATIVO/IN-
FORMÁTICA) Analise o trecho de código Java mostrado a seguir.
Assinale a opção que indica o resultado quando aNumber for igual a 3.
a. “primeira string”
b. “segunda string”
c. “terceira string”
d. “primeira string”
“terceira string”
e. “segunda string”
“terceira string”
COMENTÁRIO
Organizando o trecho de código da questão em uma classe em Java a seguir, temos:
public class Main {
 public static void main(String[] args) {
 int aNumber = 3;
 if (aNumber >= 0)
 if (aNumber == 0)
 System.out.println(“primeira string”);
 else
 System.out.println(“segunda string”);
 System.out.println(“terceira string”);
 }
}
Resultado da execução do código:
segunda string
terceira string
A classe Main é uma classe executável por ter o método main().
Sempre que possível, organize o código para saber o que será executado.
www.grancursosonline.com.br
71
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
A variável aNumber foi declarada com o tipo int e inicializada com o valor 3.
Após isso, temos uma estrutura de condição if, onde há a condição se aNumber é igual a 
0. Como não é, então a execução cairá no else, oque acontece a impressão no console 
do usuário: “segunda string”.
Após a estrutura de condição if-else, ou seja, fora dela, temos a impressão no console do 
usuário: “terceira string”. Essa impressão acontecerá, não importando o valor da variá-
vel aNumber.
Concluindo, a letra “e” é o nosso gabarito.
5.2.2. switch
A declaração switch, também chamada de múltiplas seleções ou escolhas, é uma 
declaração mais fácil de entender e manter do que uma declaração if/else com várias condi-
ções com muitas alternativas.
O corpo da declaração, também chamado de bloco switch, é composto por:
• Um ou mais rótulos cases;
 – Trabalham os casos específicos.
• Apenas um rótulo default;
 – Caso padrão (em inglês: default);
 – Trabalham os casos não específicos.
Para cada rótulo case, deve-se utilizar a instrução break se for o foco de encerrar a decla-
ração switch naquele caso.
Sintaxe:
switch(variável) {
 case valor1:
 Instruções;
 [break;]
 case valor2:
 Instruções;
 [break;]
 case valorN:
 Instruções;
 [break;]
 default:
 Instruções;
}
www.grancursosonline.com.br
72
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Exemplo 1:
int x = 15;
switch(x) {
 case 14:
 System.out.println(“x = 14.”);
 break;
 case 15:
 System.out.println(“x = 15.”);
 break;
 default:
 System.out.println(“x!= 14 e x!= 15.”);
}
Resultado da execução do código:
x = 15
No Exemplo 1, temos uma variável x do tipo int que recebe o valor 15. Temos também 
uma estrutura switch. Testaremos o valor de x nesta estrutura: caso x seja 14, será impresso 
Valor de x é 14 e e break. Caso seja 15, será impresso valor de x é 15 e break. Como x real-
mente possui o valor 15, então isso será impresso. Caso x não caia nesses casos (ou seja, 
em casos não previstos), será impresso que x não possui valor 14 e nem 15.
Qual o uso da declaração break dentro da estrutura switch? Cada break encerrará um 
bloco switch. O seu uso não é obrigatório, porém, caso ele não seja usado, todas as decla-
rações após o case correspondente serão executadas até que um break seja encontrado. 
A declaração switch somente vai ser encerrada se achar uma instrução break ou quando 
chegar ao final de sua estrutura.
Exemplo 2:
int x = 15;
switch(x) {
 case 14:
 System.out.println(“x = 14.”);
 break;
 case 15:
 System.out.println(“x = 15.”);
 default:
 System.out.println(“x!= 14 e x!= 15.”);
}
www.grancursosonline.com.br
73
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Resultado da execução do código:
x = 15
x!= 14 e x!= 15.
Figura 5.2: Tipos e classes que o switch suporta.
Quais são os tipos e classes que o switch suporta (figura 5.2)?
• Tipos primitivos:
 – byte;
 – short;
 – char; e
 – int.
• Classes wrappers:
 – Byte;
 – Short;
 – Character; e
 – Integer.
• Outros:
 – Strings; e
 – Tipos enumerados.
Os tipos trabalhados até a versão 6 da linguagem Java eram apenas: byte, short, char e int.
www.grancursosonline.com.br
74
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Para finalizarmos, a declaração if/else pode testar expressões com base em faixas de 
valores ou condições. Já a declaração switch testa expressões com base apenas em um 
único valor dos tipos:
• Tipos primitivos:
 – byte, short, char e int.
• Classes wrappers:
 – Byte, Short, Character e Integer.
• Outros:
 – String e Tipos enumerados.
Em relação a uma estrutura if com vários else’s, uma estrutura com switch é mais enxuta.
DIRETO DO CONCURSO
16. (FGV/2018/MPE/AL/ANALISTA DO MINISTÉRIO PÚBLICO/ADMINISTRADOR DE 
REDE) Analise o trecho de código Java mostrado a seguir.
A execução do código acima produzirá
a. a linha “Caso default”.
b. a linha “Segundo caso”.
c. as linhas “Segundo caso” e “Caso default”.
d. um erro de execução.
e. um erro de compilação.
www.grancursosonline.com.br
75
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
Organizando o código da questão, temos:
public class Exemplo {
 public static void main(String args[]) {
 int a = 2;
 switch (a) {
 case 1:
 case 3:
 System.out.println(“Primeiro caso”);
 break;
 case 2:
 case 4:
 System.out.println(“Segundo caso”);
 default:
 System.out.println(“Caso default”);
 break;
 }
 }
}
Resultado da execução do código:
Segundo caso
Caso default
A classe Exemplo é uma classe executável por ter o método main().
No código da questão, a variável a foi declarada com o tipo int e inicializada com o valor 2.
Após isso, temos uma estrutura de condição switch, onde os casos serão comparados com 
o valor da variável a.
Como o valor da variável a é 2, então caiu no case 2, porém, dentro dele não há a instrução 
break, o que faz a execução do código ir para o próximo case, ou seja, case 4. Neste case, 
será impresso no console do usuário “Segundo caso”.
O case 4 também não possui a instrução break, o que faz a execução do código ir para 
o próximo case, ou seja, caso default. Neste caso default, será impresso no console do 
usuário “Caso default”.
Então, as seguintes strings serão impressas: “Segundo caso” e “Caso default”, o que faz a 
letra “c” ser nosso gabarito.
www.grancursosonline.com.br
76
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
5.3. ESTRUTURAS DE REPETIÇÃO
5.3.1. while
A declaração while executa uma instrução ou um conjunto de instruções ENQUANTO 
uma condição é verdadeira. Essa condição é feita no início da declaração, deve vir entre 
parênteses e retornar um valor booleano.
Exemplo:
int x = 1;
while (x < 11) {
System.out.println(x + “,”);
x++;
}
Resultado da execução do código:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
No exemplo acima, temos a variável x do tipo int que recebe o valor 1. Na estrutura de 
repetição while, temos a condição: enquanto o valor da variável x for menor que 11, execute 
as instruções dentro do bloco da estrutura.
Dentro da estrutura while, há a impressão do valor da variável x concatenado com uma 
vírgula. Depois isso, a variável x é atualizada, pois, se não houvesse essa atualização, a 
estrutura iria entrar em loop infinito.
5.3.2. do-while
A estrutura do-while é parecida com a estrutura while: executa uma instrução ou um 
conjunto de instruções enquanto uma condição é verdadeira, porém a condição é feita no 
final da declaração.
Da mesma forma que na declaração while, a condição da estrutura do-while deve vir 
entre parênteses e retornar um valor booleano.
Exemplo:
int x = 1;
do {
 System.out.println(x + “,”);
 x++;
} while (x < 11);
Resultado da execução do código:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
www.grancursosonline.com.br
77
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
No exemplo anterior, temos a variável x do tipo int que recebe o valor 1. Dentro da estrutura 
do-while, há a impressão do valor da variável x concatenado com uma vírgula. Depois disso, a vari-
ável x é atualizada, pois se não houvesse essa atualização, a estrutura iria entrar em loop infinito.
Depois das instruções da estrutura, temos a condição: enquanto o valor da variável x for 
menor que 11, volte ao início da estrutura do-while.
Essa diferença entre as estruturas while e do-while traz a seguinte consequência:
• Como a condição da estrutura while é feita no início dessa declaração, então não há 
garantia de que um loop será executado;
• Como a condição da estrutura do-while é feita no final dessa declaração, então pelo 
menos um loop será executado.
Figura 5.3: Diferença entre while e do-while.
www.grancursosonline.com.br
78
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
17. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/DESENVOL-
VIMENTO DE SISTEMAS) O programa Java
produz o número:
a. 0;
b. 1;
c. 2;
d. 3;
e. 4.
COMENTÁRIOOrganizando o código da questão, temos:
public class enigma {
 public static void main(String args[]) {
 int m = 0, n = 2;
 do {
 m = ++m;
 n--;
 } while(n > 0);
 System.out.println(m);
 }
}
Resultado da execução do código:
2
A classe enigma é uma classe executável por ter o método main().
No método main() da classe enigma, temos duas variáveis locais do tipo int: m e n. A 
variável m foi inicializada com o valor 0 e a variável n, com o valor 2.
www.grancursosonline.com.br
79
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Dentro da estrutura do-while, a variável m recebe o valor já incrementado dela mesma. 
Depois a variável n é decrementada.
Depois das instruções da estrutura, temos a condição: enquanto o valor da variável n for 
maior que 0, volte ao início da estrutura do-while.
Fazendo o teste chinês do código, temos:
m n
0 2
1 1
2 0
Após a finalização da estrutura do-while, há a impressão do valor da variável m: 2, o que 
faz o gabarito da questão ser a letra “c”.
5.3.2. for
A declaração for fornece uma forma compacta para repetir uma faixa de valores.
Sintaxe:
for (inicialização; condição; incremento) {
 Instruções;
}
Elementos da sintaxe:
• Expressão de inicialização:
 – armazena a inicialização de um contador do loop;
 – é executada apenas uma vez.
• Expressão de condição:
 – Contém a condição a ser testada antes de cada nova passagem no loop.
• Expressão de incremento
 – Atualiza o contador.
• Pode suportar mais de um contador;
 – Porém, fica uma estrutura difícil de se manter.
Exemplo:
for (int x = 1; x < 11; x++) {
 System.out.print(x + “,”);
}
www.grancursosonline.com.br
80
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Resultado da execução do código:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
No exemplo acima, temos a estrutura de repetição for, com a variável x do tipo int que recebe 
o valor 1 na expressão de inicialização. Depois é aplicada a expressão de condição: enquanto o 
valor da variável x for menor que 11, execute as instruções dentro do bloco da estrutura.
Após a expressão de condição da declaração for, há a impressão do valor da variável 
x concatenado com uma vírgula. Após essa instrução (a única da declaração for), haverá 
a expressão de incremento, em que a variável x é incrementada com o operador de incre-
mento. Após isso, é a expressão de condição é feita novamente.
Os seguintes passos serão repetidos até a condição da expressão de condição não for 
mais satisfeita:
• Expressão de condição;
• Instruções;
• Expressão de incremento.
Além da declaração for, temos a declaração for-each. Ela é mais compacta e melhorada 
que a estrutura for.
O for-each é utilizado para trabalhar com:
• Arrays;
• Collections.
O contador da estrutura vai assumir o valor de cada componente de um array ou de uma 
collection.
Recomenda-se a sua utilização sempre que possível.
Exemplo:
String[] meses = {“JAN”, “FEV”, “MAR”};
for (String valor: meses) {
 System.out.print(valor + “, “);
}
System.out.println();
for (int i = 0; i < meses.length; i++) {
 System.out.print(meses[i] + “, “);
}
www.grancursosonline.com.br
81
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Resultado da execução do código:
JAN, FEV, MAR,
JAN, FEV, MAR,
No exemplo acima, o primeiro for é do tipo for-each. Não há expressões de inicialização, 
de condição e de incremento. Simplesmente há uma variável contadora que assume cada 
valor do componente do array. No caso, a variável contadora é chamada valor, que é do tipo 
String, e o array a ser percorrido é o array meses, que é do tipo String, ou seja, cada um dos 
seus componentes é do tipo String.
A cada passada na primeira declaração for, a variável contadora valor assume o valor de 
um componente do array meses e então é impresso o seu texto.
O segundo for do exemplo tem mesma função que o primeiro, mas veja que o primeiro é 
mais compacto e pode fazer o mesmo que o segundo mais completo.
DIRETO DO CONCURSO
18. (FGV/2013/AL/MA/TÉCNICO DE GESTÃO ADMINISTRATIVA/PROGRAMADOR DE 
SISTEMAS) Considere o código a seguir:
Assinale a alternativa que indica um erro neste código.
a. A sintaxe do comando if (linha 5) está incorreta.
b. Não é permitido declarar a variável inteira i dentro da declaração do laço for (linha 4).
c. A variável inteira j não foi inicializada.
d. Não é possível imprimir valores inteiros sem antes convertê-los para Strings (linha 8).
e. A classe Main e o método main não podem ter o mesmo nome (linhas 1 e 2).
COMENTÁRIO
Organizando o código da questão, temos:
public class Main {
 public static void main(String[] args) {
www.grancursosonline.com.br
82
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
 int j;
 for (int i = 0; i < 14; i++) {
 if (i < 10) {
 j = 2 + i;
 }
 System.out.println(“j: “ + j + “ i: “ + i);
 }
 }
}
Resultado da execução do código:
error: variable j might not have been initialized
 System.out.println(“j: “ + j + “i: “ + i);
A classe Main é uma classe executável por ter o método main().
No método main() da classe Main, temos uma variável local do tipo int: j, mas ela não foi 
inicializada. Não é necessário inicializar uma variável local no momento de sua declaração, 
mas, antes que ela seja utilizada, deve-se inicializá-la, se não, o compilador irá mostrar um 
erro quando a variável local for usada sem sua inicialização.
Temos a estrutura de repetição for no método main(), com a variável i do tipo int que recebe o 
valor 0 na expressão de inicialização. Depois é aplicada a expressão de condição: enquanto 
o valor da variável i for menor que 14, execute as instruções dentro do bloco da estrutura.
Após a expressão de condição da declaração for, temos uma estrutura de condição if: se 
i for menor 10, então faça a variável j receber a soma do valor 2 mais o valor da variável i.
Após a estrutura de condição, há a impressão do valor da variável j concatenado com o 
valor da variável i, porém aqui haverá um erro de compilação: como a variável j não foi 
inicializada fora da estrutura de condição e a variável j só recebe um valor dentro dessa 
estrutura, não há garantia de que a variável j terá algum valor, o que vai gerar um erro na 
linha de impressão dessa variável local.
Diante dessa explicação, vamos entender o texto de cada alternativa da questão:
• “a”: A sintaxe do comando if (linha 5) está incorreta.
 – ERRADO. Não há erro algum na declaração if.
• “b”: Não é permitido declarar a variável inteira i dentro da declaração do laço for (linha 4).
 – ERRADO. A variável local i pode ser declarada tanto fora da estrutura for quanto 
nessa estrutura (como está no código da questão).
• “c”: A variável inteira j não foi inicializada.
 – CERTO. Como foi explicado.
• “d”: Não é possível imprimir valores inteiros sem antes convertê-los para Strings 
(linha 8).
www.grancursosonline.com.br
83
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
 – ERRADO. Pode-se imprimir os valores inteiros sem precisar convertê-los em strings.
• “e”: A classe Main e o método main não podem ter o mesmo nome (linhas 1 e 2).
 – ERRADO. Podem sim.
Então a letra “c” é o nosso gabarito.
Apenas como forma de correção, podemos fazer a variável j ser inicializada com o valor 0 
em sua declaração. Com isso, corrigimos o erro e há a execução correta do código.
public class Main {
 public static void main(String[] args) {
 int j = 0;
 for (int i = 0; i < 14; i++) {
 if (i < 10) {
 j = 2 + i;
 }
 System.out.println(“j: “ + j + “ i: “ + i);
}
 }
}
Resultado da execução do código:
j: 2 i: 0
j: 3 i: 1
j: 4 i: 2
j: 5 i: 3
j: 6 i: 4
j: 7 i: 5
j: 8 i: 6
j: 9 i: 7
j: 10 i: 8
j: 11 i: 9
j: 11 i: 10
j: 11 i: 11
j: 11 i: 12
j: 11 i: 13
www.grancursosonline.com.br
84
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICODA LINGUAGEM
www.grancursosonline.com.br
19. (FGV/2010/DETRAN/RN/PROGRAMADOR DE COMPUTADOR) Assinale a alternativa 
que contém o resultado correto da execução do programa em linguagem Java:
Assinale a alternativa que contém o resultado correto da execução do programa em 
linguagem Java:
a. 108
b. 90
c. 130
d. 100
e. 110
COMENTÁRIO
Organizando o código da questão, temos:
public class Soma {
 public static void main(String[] args) {
 int total = 0;
 for (int conta = 2; conta <= 20; conta += 2)
 total += conta;
 System.out.printf(“Resultado %d\n”, total);
 }
}
Resultado da execução do código:
110
A classe Soma é uma classe executável por ter o método main().
No método main() da classe Main, temos uma variável local total do tipo int e ela foi inicia-
lizada com o valor 0.
www.grancursosonline.com.br
85
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Temos a estrutura de repetição for no método main(), com a variável conta do tipo int que 
recebe o valor 2 na expressão de inicialização. Depois é aplicada a expressão de condição: 
enquanto o valor da variável conta for menor que ou igual a 20, execute a instrução dentro 
do bloco da estrutura.
Após a expressão de condição da declaração for, temos o incremento da variável total: ela 
vai receber a soma do seu valor atual mais o valor da variável conta. Após essa instrução 
(a única da declaração for), haverá a expressão de incremento, em que a variável conta é 
incrementada recebendo a soma do seu valor atual mais 2.
A variável total vai ser atualizada enquanto o valor da variável conta for menor que ou 
igual a 20.
No final, a variável total terminará com o valor 110. Veja o nosso teste chinês:
Total Conta
0 2
2 4
6 6
12 8
20 10
30 12
42 14
56 16
72 18
90 20
110 22
Com isso, a letra “e” é o gabarito da questão.
www.grancursosonline.com.br
86
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
5.4. Instruções que quebram o controle de fluxo
5.4.1. break
A instrução break termina as declarações mais internas das quais o break faz parte:
• switch;
• while;
• do-while; e
• for.
Exemplo:
for (int x = 1; x < 11; x++) {
 if (x == 4)
 break;
 System.out.print(x + “, “);
}
Resultado da execução do código:
1, 2, 3,
No exemplo acima, temos a estrutura de repetição for, com a variável x do tipo int que recebe 
o valor 1 na expressão de inicialização. Depois é a aplicada a expressão de condição: enquanto 
o valor da variável x for menor que 11, execute as instruções dentro do bloco da estrutura.
Após a expressão de condição, há uma estrutura de condição if com a condição: se o 
valor da variável x for igual a 4, então break. Se a condição for falsa, então a estrutura é 
pulada e é impresso o valor da variável x concatenado com uma vírgula. No final do corpo da 
declaração for, a variável x é incrementada na expressão de incremento. Após isso, a expres-
são de condição é feita novamente.
Perceba que foram impressos apenas três valores da variável x: 1, 2 e 3. Isso aconteceu 
porque quando a variável x assumiu o valor 4, a condição da estrutura de condição if foi satis-
feita e chegou ao break, o que forçou o término da declaração for.
www.grancursosonline.com.br
87
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
DIRETO DO CONCURSO
20. (FGV/2018/BANESTES/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/DESENVOL-
VIMENTO DE SISTEMAS) Analise o código Java a seguir.
A execução desse código produz:
a. os vinte primeiros números primos.
b. os números primos menores que vinte.
c. os vinte primeiros números não primos.
d. os números não primos menores que vinte.
e. os números 2, 4, 7, 11, 16.
COMENTÁRIO
Organizando o código da questão, temos:
public class Enigma1 {
 public static void main(String[] args) {
 int num = 20, conta;
 for (int i = 2; i <= num; i++) {
 conta = 0;
 for (int j = 2; j <= i / 2; j++) {
 if (i % j == 0) {
 conta ++;
 break;
 }
www.grancursosonline.com.br
88
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
 }
 if (conta == 0) {
 System.out.println(i);
 }
 }
 }
}
Resultado da execução do código:
2
3
5
7
11
13
17
19
A classe Enigma1 é uma classe executável por ter o método main().
Verificando o resultado da execução do código, podemos concluir que são números primos 
menores que 20, o que faz a letra “b” ser o gabarito.
Esse código é bem trabalhoso e com muitos detalhes. Temos, por exemplo, uma declara-
ção for dentro de outra.
No método main() da classe Enigma1, temos duas variáveis locais do tipo int: num e conta. 
A variável num é inicializada com o valor 20 e a variável conta não foi inicializada.
Temos a primeira estrutura de repetição for no método main(), com a variável i do tipo int 
que recebe o valor 2 na expressão de inicialização. Depois é aplicada a expressão de con-
dição: enquanto o valor da variável i for menor que ou igual ao valor da variável num (20), 
execute as instruções dentro do bloco da estrutura.
Após a expressão de condição da declaração for principal, temos três instruções:
• a inicialização da variável conta, que recebe o valor 0;
• uma declaração for mais interna; e
• uma declaração if.
Dentro da declaração for principal, a variável local conta é inicializada com o valor 0.
A declaração for mais interna tem a variável j do tipo int que recebe o valor 2 na expressão 
de inicialização. Depois é aplicada a expressão de condição: enquanto o valor da variável j 
for menor que ou igual ao valor da divisão da variável i dividido por 2, execute as instruções 
dentro do bloco da estrutura.
www.grancursosonline.com.br
89
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Após a expressão de condição da declaração for mais interna, temos uma estrutura de 
condição if: se o resto da divisão de i por j for igual a 0 então:
• incremente a variável conta; e
• encerre a declaração for mais interna.
Após finalização da declaração for mais interna (ou por conta de a condição não for mais 
satisfeita ou quando chegar à instrução break), há uma estrutura de condição if: se o valor 
da conta for igual a 0, então imprima o valor da variável i.
5.4.2. continue
A instrução continue salta uma iteração das declarações mais internas das quais o con-
tinue faz parte:
• while;
• do-while; e
• for.
Exemplo:
for (int x = 1; x < 11; x++) {
 if (x == 4)
 continue;
 System.out.print(x + “ “);
}
Resultado da execução do código:
1, 2, 3, 5, 6, 7, 8, 9, 10,
No exemplo acima, temos a estrutura de repetição for, com a variável x do tipo int que recebe 
o valor 1 na expressão de inicialização. Depois é a aplicada a expressão de condição: enquanto 
o valor da variável x for menor que 11, execute as instruções dentro do bloco da estrutura.
Após a expressão de condição, há uma estrutura de condição if com a condição: se o 
valor da variável x for igual a 4, então continue. Se a condição for falsa, então a estrutura é 
pulada e é impresso o valor da variável x concatenado com uma vírgula. No final do corpo 
da declaração for, a variável x é incrementada na expressão de incremento. Após isso, é a 
expressão de condição é feita novamente.
Perceba que foram impressos todos os valores da variável x (1, 2, 3, 5, 6, 7, 8, 9 e 10), exceto 
o valor 4. Isso aconteceu porque, quando a variável x assumiu o valor 4, a condição da estrutura 
de condição if foi satisfeita e chegou ao continue, o que forçou um salto na iteração e fez a exe-
cução do código voltar ao início da estrutura, ignorando o restante do código da declaração for.
www.grancursosonline.com.br
90
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
DIRETO DO CONCURSO
21. (FGV/2018/PREFEITURA DE NITERÓI-RJ/ANALISTA DE POLÍTICAS PÚBLICAS 
E GESTÃO GOVERNAMENTAL/GESTÃO DE TECNOLOGIA) Analiseo código 
Java a seguir.
Assinale a opção que apresenta o resultado completo produzido pela execução 
desse código.
a. 2, 3, 5, 2, 3, 4, 5
b. 2, 3, 1
c. 2, 3
d. 2, 3, 2, 3, 4, 5
e. 2, 3, 5, 1
COMENTÁRIO
Organizando o código da questão, temos:
public class X {
 public static void main(String[] args) {
 for (int i = 2; i <= 5; i++) {
 if (i == 4)
 break;
 System.out.println(i);
www.grancursosonline.com.br
91
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
 }
 for (int i = 1; i <= 5; i++) {
 if (i == 1)
 continue;
 System.out.println(i);
 }
 }
}
Resultado da execução do código:
2
3
2
3
4
5
A classe X é uma classe executável por ter o método main().
Temos duas declarações for dentro do método main(). Analisaremos os dois.
A primeira estrutura de repetição for tem a variável i do tipo int que recebe o valor 2 na ex-
pressão de inicialização. Depois é aplicada a expressão de condição: enquanto o valor da 
variável i for menor que ou igual a 5, execute as instruções dentro do bloco da estrutura.
Após a expressão de condição, há uma estrutura de condição if com a condição: se o valor 
da variável i for igual a 4, então break. Se a condição for falsa, então a estrutura é pulada e 
é impresso o valor da variável i. No final do corpo da declaração for, a variável i é incremen-
tada na expressão de incremento. Após isso, é a expressão de condição é feita novamente.
Com a execução da primeira declaração for, foram impressos apenas dois valores da variável i: 
2 e 3. Isso aconteceu porque, quando a variável i assumiu o valor 4, a condição da estrutura de 
condição if foi satisfeita e chegou ao break, o que forçou o término da primeira declaração for.
A segunda estrutura de repetição for tem uma variável também chamada i do tipo int que 
recebe o valor 1 na expressão de inicialização. Depois é aplicada a expressão de condição: 
enquanto o valor da variável i for menor que ou igual a 5, execute as instruções dentro do 
bloco da estrutura.
Após a expressão de condição, há uma estrutura de condição if com a condição: se o valor 
da variável i for igual a 1, então continue. Se a condição for falsa, então a estrutura é pulada 
e é impresso o valor da variável i. No final do corpo da declaração for, a variável i é incremen-
tada na expressão de incremento. Após isso, é a expressão de condição é feita novamente.
www.grancursosonline.com.br
92
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Com a execução da segunda declaração for, foram impressos todos os valores da variável 
i (2, 3, 4, 5), exceto o valor 1. Isso aconteceu porque, quando a variável i assumiu o valor 
1, a condição da estrutura de condição if foi satisfeita e chegou ao continue, o que forçou 
um salto na iteração e fez a execução do código voltar ao início da estrutura, ignorando o 
restante do código da declaração for.
Resumindo, foram impressos 2, 3, 2, 3, 4 e 5, sendo a letra “d” nosso gabarito.
5.4.2. return
A instrução return faz com que a execução saia do método atual e o controle de fluxo 
retorne onde o método foi invocado.
A instrução pode retornar algum valor. O tipo do valor retornado deve ser igual ao tipo 
declarado no método:
public String tudoMinusculo(String texto) {
 return texto.toLowerCase();
}
Figura 2.4: Esquema do uso da instrução return.
A instrução return também pode não retornar nada. Isso acontece com métodos declara-
dos com void, que são métodos que não retornam nenhum valor:
public void naoFazNada() {
 System.out.print(“Não faz nada”);
 return;
}
www.grancursosonline.com.br
93
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Nesse caso dos métodos void, não é obrigatório o uso do return:
public void naoFazNada() {
 System.out.print(“Não faz nada”);
}
Exemplo:
public class Main {
 public static String tudoMinusculo(String texto) {
 return texto.toLowerCase();
 }
public static void imprimir(String texto) {
 System.out.println(texto);
 }
 public static void main(String[] args) {
 String rogerio = “ROGERÃO ARAÚJO”;
 imprimir(tudoMinusculo(rogerio));
 imprimir(rogerio);
 }
Resultado da execução do código:
rogerão araújo
ROGERÃO ARAÚJO
www.grancursosonline.com.br
94
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
6. ARRAYS
6.1. CONCEITUAÇÃO
Arrays são objetos que contém um conjunto de valores do mesmo tipo.
Um componente de array representa um elemento de um array. É uma variável e é 
acessado por um índice dentro de um array.
Os índices de um array, ou posições, vão de 0 até n - 1, sendo n o tamanho do array.
O tamanho de um array é estabelecido quando este é criado e é fixo.
6.2. ETAPAS DE UM ARRAY
6.2.1. Visão geral
Podemos definir as seguintes etapas para um array (figuras 6.1 e 6.2):
• declaração um array;
• criação de um array;
• inicialização dos elementos; e
• acesso aos elementos.
Figura 6.2: Etapas de um array.
www.grancursosonline.com.br
95
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 6.1: Etapas de um array.
6.2.2. Declaração de um array
Na declaração, apenas definimos o tipo e o nome do array. Não é ainda o momento da 
definição do seu tamanho.
Para a declaração de um array, usamos os colchetes:
• Ao lado do tipo do array;
 – É a forma mais recomenda por conta da leitura do código;
 – tipo[ ] nomeArray;
• Ao lado do nome do array;
 – tipo nomeArray[ ];
Exemplos:
byte[] arrayBytes;
Candidato arrayCandidatos[];
Nos exemplos acima, temos:
• A declaração do array chamado arrayBytes;
 – utilizando a forma mais recomendada;
 – cada componente desse array será do tipo byte.
www.grancursosonline.com.br
96
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
• A declaração de outro array: arrayCandidatos;
 – utilizamos os colchetes ao lado do nome no momento da declaração;
 – esse array é do tipo de uma classe chamada Candidato, ou seja, cada componente 
desse array será uma variável do tipo Candidato.
6.2.3. Criação de um array
É na criação de um array que definimos e fixamos o tamanho do array.
Os componentes do array são inicializados automaticamente com valores padrões dos 
tipos, por exemplo:
byte[] arrayBytes; // Declaração do array.
arrayBytes = new byte[10]; // Criação do array com 10 posições.
No exemplo acima, declaramos o array chamado arrayBytes na primeira linha e, na 
segunda, definimos o seu tamanho: 10 elementos do tipo byte.
Podemos criar um array de duas formas:
• utilizando o operador new;
 – seguido do tipo e do tamanho do array; ou
• fazendo junção com a fase de inicialização;
 – que veremos na próxima seção.
Utilizando o operador new seguido do tipo e o tamanho do array, temos a seguinte sintaxe:
tipo[ ] array = new tipo[n];
Sendo n o tamanho do array.
Exemplos:
// Array declarado com tipo byte.
byte[] arrayBytes;
// Array criado com 10 posições.
arrayBytes = new byte[10];
// Em uma mesma linha, array declarado e criado.
// Array declarado com o tipo Candidato e criado com 5 posições.
Candidato[] arrayCandidatos = new Candidato[5];
A segunda forma de criação de array é fazendo junção com a fase de inicialização, cuja 
sintaxe é:
tipo[ ] array = {valo1, valo2, valo3, …, valorN};
Sendo o número de valores o tamanho do array e os valores devem estar entre chaves { }.
www.grancursosonline.com.br
97
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Exemplo:
// Array declarado, criado com tamanho 6 e cada componente inicia-
lizado com um valor de forma explícita.
byte[] arrayBytes = {4, 5, 7, 8, 23, 45};
6.2.4. Inicialização dos elementos de um array
Podemos inicializar os elementos de um array de duas maneiras:
• fazendo junção com a fase de criação; ou
• fazendo junção com a fase de acesso.
Estudamos a primeiraforma (fazendo junção com a fase de criação) na seção anterior. 
Nesta seção, focaremos na segunda maneira: fazendo junção com a fase de acesso.
Quando inicializamos os elementos de um array fazendo junção com a fase de acesso, 
utilizamos a seguinte sintaxe:
array[0] = valo1;
array[1] = valor2;
array[n – 1] = valorN; // Sendo n o tamanho do array.
Exemplo:
// Array declarado e criado com tamanho 2.
byte[] arrayBytes = new byte[2];
// Cada componente inicializado com um valor de forma explícita.
arrayBytes[0] = 4;
arrayBytes[1] = 5;
6.2.5. Acesso aos componentes de um array
Estudamos que um componente de array representa um elemento de um array. É uma 
variável e é acessado por um índice dentro de um array.
Os índices de um array, ou posições, vão de 0 até n - 1, sendo n o tamanho do array.
Para acessar elementos de um array, usamos a sintaxe:
array[0] = valo1;
array[1] = valor2;
array[n – 1] = valorN;
www.grancursosonline.com.br
98
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Exemplo:
// Array declarado, criado com tamanho 6 e cada componente inicia-
lizado com um valor de forma explícita.
byte[] arrayBytes = {4, 5, 7, 8, 23, 45};
// Acessando o elemento de posição 0: valor 4.
System.out.println(arrayBytes[0]);
// Acessando o elemento de posição 2: valor 7.
System.out.println(arrayBytes[2]);
6.3. Tamanho de um array
Para sabermos o tamanho de um array, basta utilizar o atributo length desse array. 
Esse atributo é do tipo int e representa a quantidade de elementos de um array.
Exemplo:
byte[] array = {4, 5, 7, 8, 23};
System.out.println(array.length);
Resultado da execução do código:
5
Podemos usar o atributo length para acessar o último índice de um array. Como os índi-
ces de um array vão de 0 até n - 1, sendo n o tamanho do array, podemos acessar o último 
elemento através do índice nomeArray.length - 1:
Exemplo:
byte[] array = {4, 5, 7, 8, 23};
System.out.println(array[array.length - 1]);
Resultado da execução do código:
23
DIRETO DO CONCURSO
22. (FGV/2021/IMBEL/ANALISTA ESPECIALIZADO/ANALISTA DE SISTEMAS) No con-
texto da linguagem Java, considere um array definido como segue.
String[] nomes = new String[100];
Assinale a expressão cujo valor corresponde ao índice do último elemento do array nomes.
a. nomes.length
b. nomes.length - 1
c. nomes.size
d. nomes.size + 1
e. nomes.ubound
www.grancursosonline.com.br
99
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
Podemos acessar o último elemento através do índice nomes.length - 1, ou seja, o gabarito 
da questão é a letra “b”.
6.4. for-each
Estudamos na seção 2.3.2 a estrutura de repetição for-each. Relembrando, o for-each é 
utilizado para trabalhar com:
• arrays; e
• collections.
O contador da estrutura vai assumir o valor de cada componente de um array ou de uma 
collection.
Recomenda-se a sua utilização sempre que possível.
Exemplo:
String[] meses = {“JAN”, “FEV”, “MAR”};
for (String valor: meses) {
 System.out.print(valor + “, “);
}
System.out.println();
for (int i = 0; i < meses.length; i++) {
 System.out.print(meses[i] + “, “);
}
Resultado da execução do código:
JAN, FEV, MAR,
JAN, FEV, MAR,
No exemplo acima, o primeiro for é do tipo for-each. Não há expressões de inicialização, 
de condição e de incremento. Simplesmente há uma variável contadora que assume cada 
valor do componente do array. No caso, a variável contadora é chamada valor, que é do tipo 
String, e o array a ser percorrido é o array meses, que é do tipo String, ou seja, cada um dos 
seus componentes é do tipo String.
A cada passada na primeira declaração for, a variável contadora valor assume o valor de 
um componente do array meses e então é impresso o seu texto.
O segundo for do exemplo tem mesma função que o primeiro, mas veja que o primeiro é 
mais compacto e pode fazer o mesmo que o segundo mais completo.
www.grancursosonline.com.br
100
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
6.5. Arrays multidimensionais
Podemos ter um array em que cada componente representa outro array, ou seja, pode-
mos ter arrays multidimensionais, que são arrays de arrays.
Sintaxe:
tipo[ ][ ] array = new tipo[n][m];
Em que cada par de colchetes [ ] define uma dimensão, sendo que o primeiro par repre-
senta o array principal ([n]).
Para acessarmos um elemento, precisamos utilizar o índice de cada dimensão.
Exemplo:
// Array declarado e criado com tamanho 2 x 3.
// Dois candidatos e três notas para cada um.
double[][] notasProvas = new double[2][3];
// Cada componente inicializado com um valor de forma explícita.
notasProvas[0][0] = 9.0;
notasProvas[0][1] = 7.0;
notasProvas[0][2] = 7.5;
notasProvas[1][0] = 8.0;
notasProvas[1][1] = 10.0;
notasProvas[1][2] = 8.5;
No exemplo acima, temos um array notasProvas do tipo double. Ele é um array bidimen-
sional de 2 x 3 elementos, ou seja, serão seis elementos no total. A primeira dimensão define 
o array principal, no exemplo, é um array de dois componentes. A segunda dimensão repre-
senta o array de cada componente da primeira dimensão:
• elemento 0 do array principal possui um array de três componentes do tipo double; e
• elemento 1 do array principal possui um array de três componentes do tipo double.
Continuando no exemplo, temos o seguinte:
notasProvas[0][0] = 9;
Na linha acima, estamos acessando a posição 0 do array principal e, dentro dessa posi-
ção, acessamos a posição 0. Nesse elemento, jogamos a nota 9.0.
www.grancursosonline.com.br
101
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura 6.3: Esquema de um array bidimensional.
 
23. (FGV/2018/AL/RO/ANALISTA LEGISLATIVO/INFRAESTRUTURA DE REDES E CO-
MUNICAÇÃO) Analise a definição de um array em Java.
int[][] multi = new int[5][10];
Assinale o código que exibe corretamente um elemento de cada linha desse array.
a. for (int i = 0; i < 5; i++) {
System.out.println(multi[i][0]);
 };
b. for (int i = 0; i < 10; i++) {
System.out.println(multi[i,1]);
 };
c. for (int i = 0; i <= 5; i++) {
System.out.println(multi[i,0]);
 };
d. for (int i = 0; i <= multi.length; i++) {
System.out.println(multi[1,i]);
 };
e. for (int i = 1; i < multi[0].length; i++) {
System.out.println(multi[i,1]);
 };
www.grancursosonline.com.br
102
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
A questão traz a declaração de um array bidimensional multi do tipo int, ou seja, todos os 
seus elementos ou componentes serão do tipo int.
Na mesma linha da declaração do array, temos sua criação, ou seja, a definição de seu 
tamanho: cinco elementos principais, sendo que cada elemento será um array de dez po-
sições. Então o array multi tem cinquenta componentes ao todo.
Para acessarmos cada elemento do array multi, temos de usar a sintaxe multi[n][m], sendo 
n o índice do array principal.
Com essa informação, podemos citar que apenas a letra “a” seguiu corretamente a sintaxe 
acima, fazendo dela nosso gabarito.
Na letra “a”, temos a estrutura de repetição for, com a variável i do tipo int que recebe o va-
lor 1 na expressão de inicialização. Depois é a aplicada a expressão de condição: enquan-
to o valor da variável i for menor que 5, execute as instruções dentro do bloco da estrutura.
Após a expressão de condição, é impresso o valor do elemento na posição multi[i][0], ou 
seja, o primeiro elemento de cada componente do array principal.
No final do corpo da declaração for, a variável i é incrementada na expressão de incremen-
to. Após isso, a expressão de condição é feita novamente.
www.grancursosonline.com.br
103
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Resumo
Meu prezado aluno, minha prezada aluna, chegamos ao final da nossa aula sobre a pri-
meira parte da Linguagem Java. Vou destacar os principais pontos da aula.Visão geral do desenvolvimento com Java
Compilação dos arquivos .java e interpretação e execução dos arquivos.class
Na linguagem de programação Java:
• O código-fonte é escrito em arquivos texto com a extensão .java.
• Esses arquivos são então compilados em arquivos.class pelo compilador javac.
• Um arquivo .class:
 – não contém código nativo para um processador específico;
 – contém bytecodes, que é uma linguagem da Máquina do Virtual Java (JVM); e
 – é interpretado e executado pelo comando java para criar uma instância da JVM.
Na fase de compilação, compilamos nossas classes Java (arquivos texto de exten-
são .java) com um compilador Java (chamado pelo comando javac seguido do nome do 
arquivo .java) que vem junto com um kit de desenvolvimento Java (JDK). O resultado da 
compilação das classes Java são arquivos de extensão .class que contém bytecodes.
Na fase de interpretação e execução dos bytecodes (contidos nos arquivos de exten-
são .class), os bytecodes são interpretados e executados pela Máquina Virtual Java (JVM) 
no cliente, onde nossa aplicação irá rodar. Usamos o comando java seguido do nome do 
arquivo.class para a interpretação e execução dos bytecodes.
JDK, JRE, JVM e JIT
O Java Development Kit (JDK). Ele é o conjunto de ferramentas necessárias para reali-
zar o desenvolvimento de aplicações Java.
O JDK inclui:
• Java Runtime Environment (JRE);
• Ferramentas de programação:
 – javac: compilador;
 – java: interpretador;
 – appletviewer: visualizador de applets;
 – javadoc: gerador de documentação;
 – jar: empacotador de aplicações.
www.grancursosonline.com.br
104
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
O Java Runtime Environment (JRE) é a plataforma Java. Ele é composto por dois 
componentes:
• Java Virtual Machine (JVM);
• Java Application Programming Interface (Java API):
 – é uma biblioteca de componentes que possui vários recursos úteis e é utilizada para 
execução de aplicações Java.
Fases de uma aplicação Java
São cinco fases pelas quais passa uma aplicação Java (figura 1.7):
• Edição:
 – Primeiro, editamos nossas classes;
 – Provavelmente utilizaremos uma IDE como NetBeans ou Eclipse;
 – Com a edição delas, que são arquivos com extensão .java, as classes são salvas na 
memória secundária.
• Compilação:
 – O compilador irá pegar os arquivos.java, em seguida os compilará, gerando os 
bytecodes, criando arquivos com extensão .class;
 – Os arquivos.class também são armazenados na memória secundária.
• Carregamento:
 – O programa deve ser primeiramente colocado na memória antes de ser executado.
 – Isso é feito pelo carregador de classe, que pega o arquivo (ou arquivos).class que 
contém os bytecodes e o transfere para a memória.
• Verificação:
 – Antes que o interpretador Java execute os bytecodes, eles são verificados pelo veri-
ficador de bytecode.
 – Isso assegura que os bytecodes são válidos e não violam as restrições de segu-
rança do Java.
• Execução:
 – Finalmente, a JVM lê os bytecodes e os interpreta para uma linguagem que o com-
putador pode entender (linguagem de máquina), possivelmente armazenando valo-
res dos dados enquanto executa o programa.
www.grancursosonline.com.br
105
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Tabela: Resumo da descrição das fases de uma aplicação Java.
Fase Descrição
Edição O programa é criado no editor e armazenado em disco.
Compilação O compilador cria bytecodes e os armazena em disco.
Carregamento
O carregador de classe coloca bytecodes na memória 
principal.
Verificação
O verificador de bytecodes confirma que todos os 
bytecodes são válidos e não violam restrições de 
segurança de Java.
Execução
A JVM lê os bytecodes e os interpreta para uma 
linguagem que o computador pode entender (linguagem 
de máquina), possivelmente armazenando valores dos 
dados enquanto executa o programa.
Variáveis em Java
Declaração de variáveis em Java
Ao declararmos uma variável em Java, determinamos:
• seu nome;
• seu tipo; e
• um possível valor inicial.
As variáveis em Java também são chamadas de campos.
Temos quatro classificações de variáveis na linguagem Java:
• Variáveis de instância:
 – Também chamadas de campos não estáticos.
 – São variáveis que mantêm informações específicas e individuais de cada objeto (ou 
instância) de uma classe.
• Variáveis de classe:
 – São também chamadas de campos estáticos.
 – Possuem o modificador static.
 – Mantêm informações da classe e não de instâncias dessa classe e o escopo delas 
também é de classe.
• Variáveis locais:
 – São criadas dentro do escopo de construtores, de métodos ou de controle 
de fluxos.
www.grancursosonline.com.br
106
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
 – Possuem escopo dessas estruturas, ou seja, são vistas apenas dentro da estrutura 
onde foram declaradas.
• Parâmetros;
 – São valores passados para construtores, para métodos ou para cláusula catch em 
um bloco try-catch, cada vez que uma exceção é capturada.
 – A declaração dos parâmetros é feita na assinatura dessas estruturas.
 – Possuem escopo dessas estruturas, ou seja, são vistos apenas dentro da estrutura 
em que foram declarados.
Tipos primitivos
Introdução
A linguagem de programação Java é uma linguagem:
• de tipagem estática.
 – Quando se diz que uma linguagem é de tipagem estática, significa dizer que 
temos de declarar o tipo da variável, pois esse tipo deve ser conhecido no tempo de 
compilação.
• fortemente tipada.
 – O conceito de linguagem fortemente tipada é mais relacionado ao valor que uma 
variável pode receber de acordo com o tipo dela, ou seja, quando há a exigência de 
que os valores armazenados em uma variável sejam compatíveis com o tipo dela.
Tipos primitivos na linguagem Java
• Quantos são os tipos primitivos?
 – Oito tipos primitivos.
• Quais são os tipos primitivos?
 – BSIL: byte, short, int e long; e
 – BCFD: boolean, char, float e double.
• Intervalos dos tipos numéricos integrais BSIL (exceto char): 1.329.
• O tipo boolean representa um bit de informação, mas seu tamanho não é precisa-
mente definido.
• O tipo char também é um tipo numérico integral.
www.grancursosonline.com.br
107
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Operadores
Operadores aritméticos
Tabela: Exemplos do uso dos operadores aritméticos.
Operador Nome Exemplo
+ Adição x + y
- Subtração x – y
* Multiplicação x * y
/ Divisão x / y
% Módulo ou resto da divisão x % y
Tabela: Resumo da descrição das fases de uma aplicação Java.
Tipo do operando 1 Tipo do operando 2 Tipo de resultado da operação
byte byte int
short short int
int int int
Pelo menos um deles é do tipo long e o outro é do 
mesmo tipo ou de um tipo menos preciso.
long
Pelo menos um deles é do tipo float e o outro é do 
mesmo tipo ou de um tipo menos preciso.
float
Pelo menos um deles é do tipo double e o outro é 
do mesmo tipo ou de um tipo menos preciso.
double
www.grancursosonline.com.br
108
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Operadores unários
Tabela: Exemplos do uso dos operadores unários.
Operador Nome Exemplo
+ Mais +x
- Menos -x
++ Incremento ++x ou y++
-- Decremento --x ou y--
! Complemento !x
Operadores de igualdade e relacionais
Tabela: Exemplos do uso dos operadores de igualdade e relacionais.
Operador Nome Exemplo
== Igual a x == y
!= Diferente de x!= y
> Maior que x > y
< Menor que x < y
>= Maior que ou igual a x >= y
<= Menor que ou igual a x <= y
instanceof É instância de x instanceof y
www.grancursosonline.com.br
109
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Operadores de bits
Tabela: Exemplos do uso dos operadores de bits.
Operador Nome Exemplo
~ Complemento ~x
& AND x & y
| OR x | y
^ XOR x ^ y
<< Deslocamento à esquerda x << y
>> Deslocamentoà direita x >> y
>>> Deslocamento à direita sem sinal x >>> y
Declarações de controle de fluxo
Conceituação e visão geral
Temos as seguintes declarações de controle de fluxo:
• Estruturas de condição:
 – if-else; e
 – switch.
• Estruturas de repetição:
 – while;
 – do-while; e
 – for.
• Instruções que quebram o controle de fluxo:
 – break;
 – continue; e
 – return.
www.grancursosonline.com.br
110
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Estruturas de condição
if-else
A declaração if é a mais comum dentre todas as declarações de controles de fluxos.
As instruções dentro dela serão executadas se a condição da estrutura for true. Essa 
condição da estrutura deve vir entre parênteses e retornar um valor booleano.
A declaração else é opcional. Ela é correspondente com o if mais próximo.
switch
A declaração switch, também chamada de múltiplas seleções ou escolhas, é uma 
declaração mais fácil de entender e manter do que uma declaração if/else com várias condi-
ções com muitas alternativas.
Estruturas de repetição
while
A declaração while executa uma instrução ou um conjunto de instruções ENQUANTO 
uma condição é verdadeira. Essa condição é feita no início da declaração, deve vir entre 
parênteses e retornar um valor booleano.
do-while
A estrutura do-while é parecida com a estrutura while: executa uma instrução ou um 
conjunto de instruções enquanto uma condição é verdadeira, porém a condição é feita no 
final da declaração.
for
A declaração for fornece uma forma compacta para repetir uma faixa de valores.
Instruções que quebram o controle de fluxo
break
A instrução break termina as declarações mais internas das quais o break faz parte:
• switch;
• while;
• do-while; e
• for.
continue
A instrução continue salta uma iteração das declarações mais internas das quais o con-
tinue faz parte:
• while;
• do-while; e
• for.
www.grancursosonline.com.br
111
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
return
A instrução return faz com que a execução saia do método atual e o controle de fluxo 
retorne para onde o método foi invocado.
Arrays
Conceituação
Arrays são objetos que contêm um conjunto de valores do mesmo tipo.
Um componente de array representa um elemento de um array. É uma variável e é 
acessado por um índice dentro de um array.
Os índices de um array, ou posições, vão de 0 até n - 1, sendo n o tamanho do array.
O tamanho de um array:
• é estabelecido quando o array é criado; e
• é fixo.
Etapas de um array
Podemos definir as seguintes etapas para um array:
• declaração um array;
• criação de um array;
• inicialização dos elementos; e
• acesso aos elementos.
Tamanho de um array
Para sabermos o tamanho de um array, basta utilizar o atributo length desse array. 
Esse atributo é do tipo int e representa a quantidade de elementos de um array.
Arrays multidimensionais
Podemos ter um array em que cada componente representa outro array, ou seja, pode-
mos ter arrays multidimensionais, que são arrays de arrays.
www.grancursosonline.com.br
112
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Mapas Mentais
Visão geral do desenvolvimento com Java
Figura: Compilação das classes Java e interpretação e execução dos bytecodes.
Figura: Portabilidade com a tecnologia Java.
www.grancursosonline.com.br
113
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Arquivos .java e .class.
Figura: Onde uma classe Java é executada.
www.grancursosonline.com.br
114
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: JDK, JRE, JVM e Compilador JIT.
Figura: Plataforma Java Standard Edition.
www.grancursosonline.com.br
115
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Fases de uma aplicação Java.
Figura: Fases edição e compilação de uma aplicação Java.
www.grancursosonline.com.br
116
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Fases carregamento, verificação e execução de uma aplicação Java.
Variáveis em Java
Figura: Esquema da declaração de variáveis em Java.
www.grancursosonline.com.br
117
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Escopo das variáveis de classe e de instância.
Figura: Escopo das variáveis locais.
www.grancursosonline.com.br
118
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Escopo dos parâmetros.
Tipos primitivos
Figura 3.1: Linguagem estática e fortemente tipada.
www.grancursosonline.com.br
119
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Esquema do BSIL 1.329.
Figura: Esquema de quantos de bits e bytes cada tipo representa.
www.grancursosonline.com.br
120
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Esquema de números negativos e números positivos de cada tipo.
Figura: Esquema de valores limites negativo e positivo que cada tipo pode comportar.
www.grancursosonline.com.br
121
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Esquema do intervalo total de cada tipo.
Operadores
Operadores aritméticos
Figura: Operadores aritméticos.
www.grancursosonline.com.br
122
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Funções do operador de adição +.
Figura: Operadores de divisão / e módulo % entre dois números inteiros.
www.grancursosonline.com.br
123
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Operadores unários
Figura: Operadores unários.
Operadores de igualdade e relacionais
Figura: Operadores de igualdade e relacionais.
www.grancursosonline.com.br
124
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Figura: Esquema para o entendimento do operador instanceof.
Operadores de bits
Figura: Operadores de bits.
www.grancursosonline.com.br
125
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Declarações de controle de fluxo
Conceituação e visão geral
Figura: Declarações de controle de fluxo.
Estruturas de condição
Switch
Figura: Tipos e classes que o switch suporta.
www.grancursosonline.com.br
126
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Estruturas de repetição
do-while
Figura: Diferença entre while e do-while.
Instruções que quebram o controle de fluxo
Return
Figura: Esquema do uso da instrução return.
www.grancursosonline.com.br
127
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Arrays
Etapas de um array
Figura: Etapas de um array.
Figura: Etapas de um array.
www.grancursosonline.com.br
128
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Arrays multidimensionais
Figura: Esquema de um array bidimensional.
DIRETO DO CONCURSO
24. (FGV/2009/MEC/DESENVOLVEDOR/ADAPTADA) A respeito da linguagem Java, é in-
correto afirmar que: 
Em um sistema desenvolvido em Java, cada arquivo do sistema operacional de código 
fonte só pode ter uma única classe e essa classe tem que ter o mesmo nome do arquivo.
COMENTÁRIO
O nome de uma classe Java dará o nome do arquivo que contém o código da classe. Por 
exemplo, o código da classe Professor estará no arquivo Professor.java. Quando essa 
classe for compilada, gerando seus bytecodes, o arquivo criado será o Professor.class.
www.grancursosonline.com.br
129
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
25. (FCC/2011/TRE/RN/TÉCNICO JUDICIÁRIO/ESPECIALIDADE PROGRAMAÇÃODE 
SISTEMAS) Em relação ao Java Standard Edition, é INCORRETO afirmar:
a. Permite o desenvolvimento de aplicações desktop de linha de comando e interfaces 
gráficas Swing.
b. Portabilidade dos programas compilados para diversos sistemas operacionais, sem 
necessidade de recompilação.
c. Usa conceitos tais como orientação a objetos e multithreading.
d. Possui gerenciamento de memória embutido, por meio do coletor de lixo.
e. JME Ambiente indicado para o desenvolvimento de aplicativos para dispositivos 
móveis ou portáteis.
COMENTÁRIO
Comentando cada letra, temos:
a. “Permite o desenvolvimento de aplicações desktop de linha de comando e interfaces 
gráficas Swing”.
 – CERTO. Essa é uma das principais utilizações da Java SE.
b. “Portabilidade dos programas compilados para diversos sistemas operacionais, sem 
necessidade de recompilação”.
 – CERTO. A JVM é a peça-chave para fornecer capacidade de multiplataforma para 
as aplicações Java. É o segredo da frase “Write once, run everywhere”.
 – Ela está disponível em muitos sistemas operacionais diferentes. Com isso, os 
mesmos arquivos .class são capazes de funcionar nesses sistemas operacionais: 
Microsoft Windows, Solaris OS, Linux, Mac OS etc.
c. “Usa conceitos tais como orientação a objetos e multithreading”.
 – CERTO. São duas outras características-chave da linguagem Java.
d. “Possui gerenciamento de memória embutido, por meio do coletor de lixo”.
 – CERTO. É a função do Garbage Collector.
 – Estudaremos em outra oportunidade esse coletor.
e. “JME Ambiente indicado para o desenvolvimento de aplicativos para dispositivos móveis 
ou portáteis”.
 – ERRADO. A questão fala sobre a edição padrão, ou seja, Java SE, mas a letra “e” 
descreve a edição micro ou Java ME, por isso o erro.
 – Apenas finalizando, a Java ME é uma edição separada da SE, apesar de a ME ser 
um subconjunto da SE.
www.grancursosonline.com.br
130
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
26. (FCC/2014/CÂMARA MUNICIPAL DE SÃO PAULO/SP/CONSULTOR TÉCNICO LE-
GISLATIVO/INFORMÁTICA/ADAPTADA) Considere o trecho de código abaixo:
public class Inverte {
 public static void main(String[] args) {
 final int MAX = 10;
 Scanner sc = new Scanner(System.in);
 int[] numeros = new int[MAX];
 for (int i = 0; i < numeros.length; i++) {
 System.out.print(“Entre com o proximo inteiro: “);
 numeros[i] = sc.nextInt();
 }
 for (int i = numeros.length - 1; i >= 0; i--) {
 System.out.println(numeros[i]);
 }
 }
 }
O trecho poderá ser compilado usando a linha de comando javac Inverte.java, desde 
que tenha sido salvo num arquivo com este nome e terminação.
COMENTÁRIO
A classe Inverte é uma classe executável, pois possui o método especial main.
Para haver a compilação dessa classe em bytecodes, utilizamos o comando javac:
javac Inverte.java
Sendo que o nome-classe deve ser o mesmo nome do arquivo. Portanto, a questão 
está correta.
27. (FCC/2012/TRT 22ª REGIÃO/TÉCNICO JUDICIÁRIO/ESPECIALIDADE TECNOLOGIA 
DA INFORMAÇÃO) A plataforma Java disponibiliza um interpretador que traduz, em 
tempo de execução, o bytecode para instruções nativas do processador, permitindo, 
dessa forma, que uma mesma aplicação seja executada em qualquer plataforma com-
putacional que possua essa implementação. Trata-se de
a. Java Virtual Machine.
b. Java API.
c. JavaBeans.
d. J2SE.
e. JavaFX.
www.grancursosonline.com.br
131
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
A máquina virtual Java é a peça-chave para fornecer capacidade de multiplataforma para 
as aplicações Java. O segredo da frase “Write once, run everywhere”.
Ela é responsável por interpretar e executar o bytecode. Também possui a função de ser 
provedora de formas e meios de o aplicativo conversar com o sistema operacional.
A questão cita perfeitamente a JVM.
28. (FCC/2010/TRT 9ª REGIÃO/TÉCNICO JUDICIÁRIO/ESPECIALIDADE TECNOLOGIA 
DA INFORMAÇÃO) O JVM mais o núcleo de classes da plataforma Java e os arquivos 
de suporte formam o
a. o J2EE.
b. o JDK.
c. o JRE.
d. uma JSP.
e. uma API.
COMENTÁRIO
O Java Runtime Environment (JRE) é a plataforma Java. Ele é composto por dois 
componentes:
• Java Virtual Machine (JVM);
• Java Application Programming Interface (Java API):
 – é uma biblioteca de componentes que possui vários recursos úteis e é utilizada para 
execução de aplicações Java.
29. (FCC/2007/TJ/PE/ANALISTA JUDICIÁRIO/ANALISTA DE SUPORTE) O código Java 
compilado é gerado em arquivo com extensão
a) .ser
b) .jar
c) .java
d) .html
e) .class
COMENTÁRIO
Temos uma fase chamada de compilação para bytecodes, em que compilamos nossas 
classes Java (arquivos texto de extensão.java) com um compilador Java (chamado pelo 
comando javac seguido do nome do arquivo.java), que vem junto com um JDK. O resultado 
da compilação das classes Java são arquivos de extensão .class que contêm bytecodes.
A alternativa correta é a letra “e”.
www.grancursosonline.com.br
132
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
30. (ESAF/2004/MPU/TÉCNICO DE INFORMÁTICA) Considere o programa abaixo e assi-
nale a opção verdadeira.
public class programa {
 pubic static void main(String[] args) {
 System.out.println(“Mensagem”);
 }
 }
Considere o programa abaixo e assinale a opção verdadeira.
a. O programa está na linguagem javascript, devendo ser executado através de um 
interpretador javascript.
b. O programa está na linguagem javascript, devendo ser executado como um applet 
através de um browser.
c. O programa está na linguagem Java, devendo ser executado através de um interpre-
tador Java.
d. O programa está na linguagem Java, devendo ser executado como um applet através 
de um browser.
e. O programa, que invoca uma função javascript, está na linguagem Java, devendo o mesmo 
ser executado como um applet através de um browser e do interpretador javascript.
COMENTÁRIO
A questão traz uma classe executável, pois existe o método especial main. Ela é uma sim-
ples classe que apenas gera como saída o texto: Mensagem.
Então o programa está na linguagem Java, devendo ser executado por meio de um inter-
pretador Java, ou seja, a JVM.
31. (CONSULPLAN/2012/TSE/TÉCNICO JUDICIÁRIO/PROGRAMAÇÃO DE SISTEMAS) 
Diferentemente de outras linguagens de programação como C ou Pascal, Java utiliza 
uma linguagem intermediária da Java Virtual Machine – JVM. Essa linguagem interme-
diária denomina-se
a. bytecode.
b. appletcode.
COMENTÁRIO
Temos uma fase chamada de compilação para bytecodes, em que compilamos nossas 
classes Java (arquivos texto de extensão.java) com um compilador Java (chamado pelo 
comando javac seguido do nome do arquivo.java) que vem junto com um JDK. O resultado 
da compilação das classes Java são arquivos de extensão.class que contêm bytecodes.
Então o nome do código intermediário é bytecode.
www.grancursosonline.com.br
133
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
32. (CEBRASPE/2013/TRT 10ª REGIÃO/CARGO 12) Com relação à linguagem de progra-
mação Java, julgue o item seguinte.
Após a edição de um programa que tiver sido salvo com o nome programa.java, para com-
pilá-lo via linha de comando, será suficiente executar o comando javac programa.java.
COMENTÁRIO
Para haver a compilação da classe em bytecodes, utilizamos o comando javac:
javac NomeClasse.java
Lembre-se de que o nome classe deve ser o mesmo nome do arquivo. Portanto, a questão 
está correta.
33. (CEBRASPE/2013/PF/CARGO 3/ADAPTADA) Com relação aos conceitos e caracterís-
ticas de compiladores, julgue o item que se segue.
Interpretador é um tradutor de linguagem que executa o programa-fonte de imediato, em 
vez de gerar um código-objeto a ser executado após o término da tradução, enquanto o 
compilador recebe um programa-fonte e produz programa equivalente na linguagem-al-
vo. No caso da linguagem Java, os processadores combinam compilaçãoe interpretação.
COMENTÁRIO
Vamos dividir a questão em dois textos.
Trecho 1: “Interpretador é um tradutor de linguagem que executa o programa-fonte de imedia-
to, em vez de gerar um código-objeto a ser executado após o término da tradução, enquanto 
o compilador recebe um programa-fonte e produz programa equivalente na linguagem-alvo”.
O interpretador é uma instância de hardware ou software que lê e executa diretamente as 
instruções apresentadas. Ele não produz módulo-objeto. Apenas executa as instruções 
contidas no programa-fonte, não necessariamente em linguagem de alto nível.
Durante uma execução, o interpretador lê cada instrução a partir de um programa-fonte 
escrito em linguagem de alto nível e executa-a imediatamente.
Por não produzir algo a partir do programa-fonte, como, por exemplo, o módulo-objeto, 
como o compilador faz, podemos concluir que o interpretador não é um tradutor, mas o 
compilador é.
Essa corrente de que o interpretador não é um tradutor é defendida por vários autores, 
entre eles o mestre Andrew S. Tanenbaum. Entretanto, há várias fontes que citam que o 
interpretador é um tradutor. Mais uma divergência, para nós, concurseiros de TI, lidarmos 
quando respondemos nossas provas.
A questão gerou muita discussão, porém o Cebraspe seguiu a linha de que um interpreta-
dor é um tradutor. Então trecho correto, segundo alguns autores.
www.grancursosonline.com.br
134
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Trecho 2: “No caso da linguagem Java, os processadores combinam compilação e in-
terpretação”.
Na linguagem de programação Java:
• O código-fonte é escrito em arquivos texto com a extensão.java;
• Esses arquivos são então compilados em arquivos .class pelo compilador javac;
• Um arquivo.class:
 – Não contém código nativo para um processador específico;
 – Contém bytecodes, que é uma linguagem da Máquina do Virtual Java (JVM);
 – É interpretado e executado pelo comando java para criar uma instância da JVM.
Além disso, há também o compilador Just-in-time (JIT), um componente do JRE que melhora o 
desempenho de aplicativos Java no tempo de execução. Ele ajuda a melhorar o desempenho 
de programas Java, compilando bytecodes no código de máquina nativo no tempo de execução.
Então temos as duas ações dentre da tecnologia Java: a compilação e a interpretação.
34. (CEBRASPE/2011/TRE-ES/TÉCNICO JUDICIÁRIO/PROGRAMAÇÃO DE SISTEMAS) 
Julgue o próximo item, relativo a linguagens de programação, compilador, interpretador, 
montador e link-editor.
Independentemente de configurações, qualquer equipamento computacional é capaz 
de executar programas escritos em linguagem Java, uma vez que a compilação de 
programas nessa linguagem gera bytecodes, que, por sua vez, são interpretados para 
execução na máquina virtual Java.
COMENTÁRIO
O único erro dessa questão é o trecho “Independentemente de configurações”. É necessá-
rio instalar um JRE específico de uma plataforma, pois junto com ele vem uma JVM que:
• saberá lidar com essa plataforma; e
• conseguirá executar aplicações Java naquele ambiente.
Corrigindo a questão:
“Com a instalação de um JRE específico, qualquer equipamento computacional é capaz de 
executar programas escritos em linguagem Java, uma vez que a compilação de programas 
nessa linguagem gera bytecodes, que, por sua vez, são interpretados para execução na 
máquina virtual Java”.
www.grancursosonline.com.br
135
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
35. (CEBRASPE/2010/TRE-BA/CARGO 21) Considerando o código apresentado abaixo, 
escrito em Java, julgue os itens que se seguem.
package concurso;
public class Questão {
 public Questão (){
 }
 public static void main(String args []){
 int contador = 0;
 for (int j = 0; j < 10; j++){
 contador = j;
 if ((contador + j) == 6){
 System.out.println(“Contador” + “ eh igual a 
“ + contador);
 }
 }
 }
}
O método main será chamado quando o código mostrado for executado.
COMENTÁRIO
A questão traz uma classe executável, pois existe o método especial main. Esse método 
transforma uma classe Java em uma classe executável. Entretanto, nem todas as classes 
precisam desse método.
36. (CEBRASPE/2010/TRE-BA/CARGO 21) Considerando o código apresentado abaixo, 
escrito em Java, julgue o item que se segue.
Ao se compilar o código em questão, será gerado um arquivo de nome Questão.jvm, no 
formato bytecode.
COMENTÁRIO
Temos uma fase chamada de compilação para bytecodes, em que compilamos nossas 
classes Java (arquivos texto de extensão .java) com um compilador Java (chamado pelo 
comando javac seguido do nome do arquivo.java) que vem junto com um JDK. O resultado 
da compilação das classes Java são arquivos de extensão.class que contém bytecodes.
Então é .class, e não .jvm, como diz a questão.
www.grancursosonline.com.br
136
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
37. (CEBRASPE/2008/STF/CARGO 12) Acerca dos conceitos de software básico, julgue o 
item que se segue.
A JVM (java virtual machine) é exemplo de tradutor.
COMENTÁRIO
A JVM é responsável por interpretar e executar o bytecode. Também possui a função de 
ser provedora de formas e meios de o aplicativo conversar com o sistema operacional.
Ela não é tradutor, ou seja, compilador. Ela é um interpretador.
38. (CEBRASPE/2004/TCE-PE/CARGO 1) Julgue o item subsequente.
As ferramentas de linha de comando java e javac podem ser enquadradas, respectiva-
mente, nas categorias compilador e interpretador.
COMENTÁRIO
Para haver a compilação da nossa classe em bytecodes, utilizamos o comando javac:
javac NomeClasse.java
Lembre-se de que o nome-classe deve ser o mesmo nome do arquivo.
Para haver a interpretação e execução do arquivo .class resultante da compilação anterior, 
utilizando o comando java:
java NomeClasse
Então a questão trocou a função do javac e java, que são, respectivamente, compilador e 
interpretador.
www.grancursosonline.com.br
137
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
39. (CONSULPLAN/2012/TSE/TÉCNICO JUDICIÁRIO/PROGRAMAÇÃO DE SISTEMAS) 
Observe a figura que representa o ambiente Java típico.
Analise as afirmativas correspondentes a duas atividades desenvolvidas em duas fases.
I – A partir do código fonte, os bytecodes são criados.
II – Os bytecodes são lidos e traduzidos para uma linguagem que o computador pode enten-
der, possivelmente armazenando valores de dados enquanto executa o programa.
As atividades descritas são realizadas, respectivamente, nas seguintes fases
a. 2 e 4.
b. 2 e 5.
c. 3 e 4.
d. 3 e 5.
COMENTÁRIO
A imagem da questão é um resumo das fases da execução de uma classe Java:
• Fase 1: edição.
• Fase 2: compilação.
• Fase 3: carregamento.
• Fase 4: verificação.
• Fase 5: execução.
Agora, analisaremos os itens pedidos.
Item I: “A partir do código-fonte, os bytecodes são criados”.
www.grancursosonline.com.br
138
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
O bytecodes são criados quando compilamos nossas classes Java. O item I diz respeito à 
fase de Compilação (fase 2).
Item II: “Os bytecodes são lidos e traduzidos para uma linguagem que o computador pode 
entender, possivelmente armazenando valores de dados enquanto executa o programa”.
Na fase de execução (fase 5), a JVM lê os bytecodes e os traduz para uma linguagem que 
o computador pode entender (linguagem de máquina), possivelmente armazenando valo-
res dos dados enquanto executa o programa.
Em relação ao texto do item II, o termo melhor é “os bytecodes são lidos e interpretados...”. 
A JVM não é um tradutor ou compilador. É um interpretador.
As atividades descritas são realizadas, respectivamente, nas seguintes fases: 2 e 5.
40. (FUNDATEC/2022/IPE/SAÚDE/ANALISTA DE GESTÃO EM SAÚDE/ENGENHARIA DACOMPUTAÇÃO/ADAPTADA) Analise a afirmação abaixo sobre valores de ponto flutuante 
em Java e julgue-a como CERTO ou ERRADO.
Uma expressão 0.0 / 0.0 gera uma exceção em tempo de execução.
COMENTÁRIO
Quando da divisão de (sendo um deles dos tipos FD float/double):
• número positivo por 0, produz resultado infinito positivo;
• número negativo por 0, produz resultado infinito negativo; e
• 0 por 0, produz NaN (not a number).
41. (FURB/2022/FURB-SC/TÉCNICO EM ASSUNTOS DE INFORMÁTICA/ DESENVOLVI-
MENTO) Considere o código Java a seguir, quanto à sua sintaxe, execução e retorno:
class imprime
{
public static void main(String args[])
{
int vetor[] = {27, 75, 12, 9, 8};
for ( int i = 1; i < vetor.length - 2; ++i)
System.out.print(vetor[i+1] + “ “);
}
A saída retornará:
a. 75 12 9
b. Erro de compilação
c. Erro de execução
d. 12 9
e. 12 9 8
www.grancursosonline.com.br
139
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
COMENTÁRIO
Organizando o código da questão, temos:
class imprime {
 public static void main(String args[]) {
 int vetor[] = {27, 75, 12, 9, 8};
 for (int i = 1; i < vetor.length - 2; ++i)
 System.out.print(vetor[i+1] + “ “);
 }
}
Resultado da execução do código:
12 9
42. (FEPESE/2022/CELESC/ANALISTA DE SISTEMAS/DESENVOLVIMENTO) Qual ca-
ractere é o operador de concatenação de strings em Java?
a. .
b. I
c. +
d. &
e. &&
COMENTÁRIO
O operador de adição + possui duas funções:
• Função 1: adição entre tipos numéricos;
• Função 2: concatenação de strings.
43. (UFRPE/2022/UFRPE/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/DESENVOL-
VIMENTO DE SISTEMAS/EDITAL N. 42/ADAPTADA) Sobre a linguagem de programa-
ção Java, analise a afirmativa a seguir. 
Java permite que um array (vetor) possua valores de tipos diferentes, como int e float.
COMENTÁRIO
Arrays são objetos que contêm um conjunto de valores do mesmo tipo.
www.grancursosonline.com.br
140
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
44. (UFRPE/2022/UFRPE/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/SISTEMA DE 
INFORMAÇÃO/EDITAL N. 42) A linguagem Java traz diversos operadores para mani-
pulação de valores bit a bit (“bitwise”). Analise o seguinte código Java 17:
int x = -1;
int y = x >>> 1;
int z = x >> 1;
Considerando o código analisado, assinale a afirmativa correta.
a. O código não compila.
b. As variáveis x, y e z possuem o mesmo valor.
c. O valor da variável y é maior que o da variável z.
d. As variáveis x e z possuem valores diferentes.
e. O valor da variável y é menor que o da variável z.
COMENTÁRIO
Organizando o trecho do código da questão em uma classe executável, temos:
public class Main {
 public static void main(String[] args) {
 int x = -1;
 int y = x >>> 1;
 int z = x >> 1;
 System.out.println(“x: “ + x);
 System.out.println(“y: “ + y);
 System.out.println(“z: “ + z);
 }
}
Resultado da execução do código:
x: -1
y: 2147483647
z: -1
www.grancursosonline.com.br
141
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
45. (COTEC/2021/PREFEITURA DE SANTA FÉ DE MINAS-MG/TÉCNICO EM INFORMÁ-
TICA) Considerando o programa Java abaixo, o que será mostrado após a execução 
com a entrada dos números 3, 5 e 2, nesta sequência?
Escolha a alternativa CORRETA.
a. MEDIA = 1.
b. MEDIA = 5.
c. MEDIA = 8,2.
d. MEDIA = 2.
e. MEDIA = 10.
COMENTÁRIO
Organizando e adaptando o código da questão segundo os dados das variáveis A, B 
e C, temos:
public class JavaApplication46 {
 public static void main(String[] args) {
 double A, B, C, MEDIA;
 A = 3;
 B = 5;
 C = 2;
 MEDIA = A + B + C / 10;
 System.out.printf(“MEDIA = %.1f\n”, MEDIA);
 }
}
Resultado da execução do código:
MEDIA = 8.2
A variável MEDIA recebe o resultado da seguinte operação:
MEDIA = A + B + C / 10;
Nessa operação, devemos resolver primeiro a operação de maior precedência: a divisão 
da variável C por 10, o que gera 0.2.
Depois MEDIA recebe a soma dos valores 3 + 5 + 0.2. No final MEDIA recebe 8.2.
www.grancursosonline.com.br
142
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
46. (CEBRASPE/2021/SEED-PR/PROFESSOR/EDUCAÇÃO BÁSICA E JORNADA) Em 
Java, a estrutura de repetição que permite que um conjunto de instruções não seja exe-
cutada nenhuma vez é representada por
a. while.
b. switch.
c. do...while.
d. case.
e. continue.
COMENTÁRIO
A declaração while executa uma instrução ou um conjunto de instruções ENQUANTO uma 
condição é verdadeira. Essa condição é feita no início da declaração, deve vir entre parên-
teses e retornar um valor booleano.
Como a condição do while é feita já no início, não temos garantia de que seu bloco de ins-
truções será executado, o que faz a letra “a” ser o gabarito.
A letra “c” pode ser descartada porque a condição da declaração do-while é feita no final, o 
que gera a possibilidade de pelo menos uma loop ser executada para essa estrutura.
Na estrutura switch (letra “b”), podemos ter o caso default, o que pode gerar uma execução 
de código dentro dessa declaração.
A letra “d” traz apenas um item que faz parte da estrutura switch: case.
Finalmente, a instrução continue (letra “e”) salta uma iteração das declarações mais inter-
nas das quais o continue faz parte (while, do-while ou for).
47. (QUADRIX/2021/CRECI 14ª REGIÃO/ANALISTA DE TI) A respeito da linguagem de 
programação Java, julgue o item.
As instruções if, if...else e switch são exemplos de instruções de seleção contidas na 
linguagem Java.
COMENTÁRIO
Temos as seguintes estruturas de condição:
• if-else; e
• switch;
www.grancursosonline.com.br
143
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
48. (QUADRIX/2021/CRECI 14ª REGIÃO/ANALISTA DE TI) A respeito da linguagem de 
programação Java, julgue o item.
Na linguagem Java, a criação de um array é realizada por meio da palavra-chave create.
COMENTÁRIO
Podemos criar um array de duas formas utilizando o operador new, seguido do tipo e do 
tamanho do array:
tipo[ ] array = new tipo[n];
Não existe essa palavra-chave create em Java.
49. (SELECON/2021/EMGEPRON/ANALISTA DE SISTEMAS – DESENVOLVIMENTO DE 
SISTEMAS/ADAPTADA) Java é uma tecnologia de desenvolvimento, sendo simultanea-
mente uma linguagem e uma plataforma. Nesse contexto, apresenta-se o código a seguir.
Após a execução, a saída gerada será:
a. 0 1 3
b. 0 1 3 4
c. 0 1 2 3
d. 0 1 2 3 4
COMENTÁRIO
Organizando o código da questão, temos:
class Emgepron {
 public static void main(String args[]) {
 for (int i = 0; i < 4; i++) {
 if (i == 2)
 continue;
 System.out.print(i + “ “);
 }
 }
}
www.grancursosonline.com.br
144
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Resultado da execução do código:
0 1 3
Quando a variável i tiver o valor 2, haverá um salto na declaração for.
50. (IDECAN/2021/PEFOCE/ANÁLISE DE SISTEMAS CIÊNCIAS DA COMPUTAÇÃO) No 
que diz respeito à linguagem de programação Java, a estrutura switch-case equivale a 
um conjunto de instruções if encadeadas, fornecendo maior inteligibilidade e eficiência 
durante a execução. Assinale a alternativa que apresente corretamente sua sintaxe.
a. 
b. 
c. 
d. 
e. 
COMENTÁRIO
A declaração switch, também chamada de múltiplas seleções ou escolhas, é uma declara-
ção mais fácil de entender e manter do que uma declaração if/else com várias condições 
com muitas alternativas.
www.grancursosonline.com.br
145
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
O corpo da declaração, também chamado de bloco switch, é composto por:
• um ou mais rótulos cases, que trabalham os casos específicos; e
• apenas um rótulo default;
 – caso padrão (em inglês: default);
 – trabalham os casos não específicos.
Para cada rótulo case, deve-se utilizar a instrução break se for o foco de encerrara decla-
ração switch naquele caso.
Sintaxe:
switch(variável) {
 case valor1:
 Instruções;
 [break;]
 case valor2:
 Instruções;
 [break;]
 case valorN:
 Instruções;
 [break;]
 default:
 Instruções;
}
A letra “e” é a única que trouxe a sintaxe correta da declaração switch.
www.grancursosonline.com.br
146
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
GABARITO
 1. C
 2. B
 3. D
 4. C
 5. D
 6. A
 7. D
 8. B
 9. A
 10. C
 11. D
 12. B
 13. B
 14. C
 15. E
 16. C
 17. C
 18. C
 19. E
 20. B
 21. D
 22. B
 23. A
 24. C
 25. E
 26. C
 27. A
 28. C
 29. E
 30. C
 31. A
 32. C
 33. C
 34. E
 35. C
 36. E
 37. E
www.grancursosonline.com.br
147
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
 38. E
 39. B
 40. E
 41. D
 42. C
 43. E
 44. C
 45. C
 46. A
 47. C
 48. E
 49. A
 50. E
www.grancursosonline.com.br
148
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
Referências
APOSTILA JAVA E ORIENTAÇÃO A OBJETOS DA CAELUM. Disponível em: http://www.
caelum.com.br/download/caelum-java-objetos-fj11.pdf. Acesso em: 27 out. 2022.
APOSTILA JAVA E ORIENTAÇÃO A OBJETOS DA K19. Disponível em: http://www.k19.com.
br/downloads/apostilas/java/k19-k11-orientacao-a-objetos-em-java. Acesso em: 27 out. 2022.
BYTECODE. Disponível em: http://www.hardware.com.br/termos/bytecode. Acesso em: 27 
out. 2022.
DIFERENÇAS ENTRE JVM, JRE, JDK, JAVA PLATAFORM E JAVA. Disponível em: http://
jossemar.wordpress.com/2007/10/31/diferencas-entre-jvm-jre-jdk-java-plataform-e-java/. 
Acesso em: 27 out. 2022.
ROCHA, Helder. Curso J100: Programação Orientada a Objetos usando Java: http://www.
argonavis.com.br/cursos/java/j100/. Acesso em: 27 out. 2022.
HORSTMANN, Cay S.; CORNELL, Gary. Core Java. Volume I - Fundamentos. 8ª ed. São 
Paulo: Editora Pearson Prentice Hall, 2010.
INTERPRETAÇÃO E COMPILAÇÃO DE LINGUAGENS DE PROGRAMAÇÃO. Disponível 
em: http://moodle.fct.unl.pt/pluginfile.php/213715/mod_label/intro/01-overview.pdf. Acesso 
em: 27 out. 2022.
JAVAFX FREQUENTLY ASKED QUESTIONS. Disponível em: http://www.oracle.com/techne-
twork/java/javafx/overview/faq-1446554.html. Acesso em: 27 out. 2022.
JIT (JUST IN TIME) – COMPILAÇÃO DE PROGRAMAS JAVA. Disponível em: http://www.
guj.com.br/posts/downloadAttach/1491.java. Acesso em: 27 out. 2022.
KIMURA, Fábio. Programação Orientada a Objetos com Java – Aula 1. Disponível em: http://
www.slideshare.net/fkimura/aula1-2897347. Acesso em: 27 out. 2022.
MACHADO, Francis Berenger; MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais. 4ª 
ed. Editora LTC, 2007.
www.grancursosonline.com.br
http://www.caelum.com.br/download/caelum-java-objetos-fj11.pdf
http://www.caelum.com.br/download/caelum-java-objetos-fj11.pdf
http://www.k19.com.br/downloads/apostilas/java/k19-k11-orientacao-a-objetos-em-java
http://www.k19.com.br/downloads/apostilas/java/k19-k11-orientacao-a-objetos-em-java
http://www.hardware.com.br/termos/bytecode
http://jossemar.wordpress.com/2007/10/31/diferencas-entre-jvm-jre-jdk-java-plataform-e-java/
http://jossemar.wordpress.com/2007/10/31/diferencas-entre-jvm-jre-jdk-java-plataform-e-java/
http://www.argonavis.com.br/cursos/java/j100/
http://www.argonavis.com.br/cursos/java/j100/
http://moodle.fct.unl.pt/pluginfile.php/213715/mod_label/intro/01-overview.pdf
http://www.slideshare.net/fkimura/aula1-2897347
http://www.slideshare.net/fkimura/aula1-2897347
149
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
O COMPILADOR JIT. Disponível em: http://www-01.ibm.com/support/knowledgecenter/
SSYKE2_8.0.0/com.ibm.java.aix.80.doc/diag/understanding/jit.html. Acesso em: 27 out. 2022.
PROCESSO DE TRADUÇÃO E EXECUÇÃO DE PROGRAMAS JAVA. Disponível em: 
http://www.devmedia.com.br/processo-de-traducao-e-execucao-de-programas-java/26915. 
Acesso em: 27 out. 2022.
SIERRA, Kate; BATES, Bert. Certificação Sun® para Programador e Desenvolvedor em Java 
2 – Guia de Estudos. 3ª ed. Rio de Janeiro: Editora Alta Books, 2003.
THE JAVA LANGUAGE ENVIRONMENT: CONTENTS. Disponível em: http://www.oracle.
com/technetwork/java/langenv-140151.html. Acesso em: 27 out. 2022.
THE JAVA™ LANGUAGE SPECIFICATION - JAVA SE 7 EDITION. Disponível em: http://
docs.oracle.com/javase/specs/jls/se7/html/. Acesso em: 27 out. 2022.
THE JAVA™ TUTORIALS - LANGUAGE BASICS. Disponível em: http://docs.oracle.com/
javase/tutorial/java/nutsandbolts/. Acesso em: 27 out. 2022.
THE JAVA™ TUTORIALS - LESSON: The Java Technology Phenomenon. Disponível em: 
http://docs.oracle.com/javase/tutorial/getStarted/intro/. Acesso em: 27 out. 2022.
YOUR FIRST CUP: An Introduction to the Java EE Platform. Disponível em: http://docs.
oracle.com/javaee/6/firstcup/doc/. Acesso em: 27 out. 2022.
www.grancursosonline.com.br
http://www-01.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.aix.80.doc/diag/understanding/jit.html
http://www-01.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.aix.80.doc/diag/understanding/jit.html
http://www.devmedia.com.br/processo-de-traducao-e-execucao-de-programas-java/26915
http://www.oracle.com/technetwork/java/langenv-140151.html
http://www.oracle.com/technetwork/java/langenv-140151.html
http://docs.oracle.com/javase/specs/jls/se7/html/
http://docs.oracle.com/javase/specs/jls/se7/html/
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/
http://docs.oracle.com/javase/tutorial/getStarted/intro/
150
Professor Rogério Araújo
LINGUAGEM JAVA – O BÁSICO DA LINGUAGEM
www.grancursosonline.com.br
#VEM
FACILITE SEUS ESTUDOS:
rotas de aprovação, mapas 
mentais, resumos e 
exercícios irão te guiar por 
um caminho mais simples 
e rápido.
TUDO NO SEU TEMPO 
E ESPAÇO:
faça o download de 
videoaulas e de PDFs e 
estude onde e quando 
você quiser e puder.
VOCÊ NÃO ESTÁ SOZINHO:
mentorias diárias, ao vivo,
e fórum de dúvidas não
te deixarão só 
nesta caminhada.
TUDO DE NOVO QUANTAS 
VEZES VOCÊ QUISER:
quantas vezes você quiser, 
quantas vezes você precisar, 
estude com o material mais 
atualizado e de melhor 
qualidade do mercado.
NÚMEROS GRANDES:
milhares de alunos
aprovados, mais de 1 milhão 
de questões, mais de 23 mil 
cursos e centenas de 
professores para te ajudar
a passar.
A realização do seu sonho merece um 
investimento de qualidade. Não desperdice 
tempo, dinheiro e energia. Invista no seu sucesso, 
no seu futuro e na sua realização profissional.
Assine AGORA a melhor e mais completa 
plataforma de ensino para concursos públicos. 
Sua nomeação na palma da sua mão com a 
Assinatura Ilimitada 6.0 do Gran Cursos Online.
 (61) 99884-6348
Contato para vendas: 
Mude de vida. Garanta seu 
futuro com a melhor plataforma de 
estudos para concurso público.
TUDO NA SUA MÃO:
só a Assinatura Ilimitada 
oferece, de forma livre 
e gratuita: Gran Questões, 
Gerenciador de Estudos, 
Audiobooks e muito mais!
| De segunda a quinta até as 22h e sexta até as 21h.
Quero ser assinante 
ilimitado agora
www.grancursosonline.com.br
https://www.grancursosonline.com.br/assinatura-ilimitada#utm_source=Landing_Page&utm_medium=Materiais_Gratuitos&utm_campaign=anuncio_material_gratuito_AI
	Apresentação
	1. Visão geral do desenvolvimento com Java
	2. Variáveis em Java
	3. Tipos primitivos
	4. Operadores
	5. Declarações de controle de fluxo
	6. Arrays
	Resumo
	Mapas Mentais
	Gabarito
	Referências

Mais conteúdos dessa disciplina