Buscar

9 - Desenvolvimento para dispositivos móveis,

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

DESENVOLVIMENTO 
PARA DISPOSITIVOS 
MÓVEIS 
Diego Bittencourt de Oliveira
Linguagem Java: 
conceitos essenciais
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever as características da linguagem Java, como suas classes e 
tipos de dados.
 � Identificar os principais conceitos de programação orientada a objetos 
com Java.
 � Operacionalizar a utilização do Java como linguagem base para o 
desenvolvimento de aplicações Android.
Introdução
Neste capítulo você conhecerá a linguagem de programação Java, que 
é a linguagem de programação nativa da plataforma Android. Por ser 
muito popular, esta linguagem foi a escolha mais adequada como lin-
guagem de programação padrão da plataforma. Isso se deve ao fato de 
existirem muitos desenvolvedores experientes nesta linguagem. Assim, 
a plataforma já inicia com milhões de desenvolvedores especializados 
em sua linguagem de programação base. 
O Java também é uma linguagem de programação potente, sendo 
totalmente orientada a objetos, além de possuir uma enorme biblioteca 
de classes muito sólida e atualizada de forma regular. No decorrer deste 
capítulo, conheceremos melhor as características das classes Java, bem 
como os tipos de dados que a linguagem de programação disponibiliza 
para o seu desenvolvedor.
Veremos, também, os conceitos de programação orientada a objetos 
com Java e aprenderemos, ainda, a utilizar Java como linguagem padrão 
para o desenvolvimento de aplicações para Android.
Linguagem Java: classes e tipos de dados
Segundo Deitel, Deitel e Deitel (2015), a linguagem Java para aplicativos 
Android é semelhante e, ao mesmo tempo, muito diferente de outras aplicações 
desenvolvidas nesta linguagem. Um desenvolvedor com experiência em Java 
terá facilidade em desenvolver aplicativos para Android, mas compreenderá 
a diferença mencionada. Já um desenvolvedor com pouca experiência nesta 
linguagem deve buscar se familiarizar.
Como já mencionado, Java é uma linguagem de programação orientada a 
objetos, ou seja, baseada na modelagem de objetos e na comunicação que estes 
possuem entre si. Em uma situação de analogia a um objeto real, pode-se definir 
o objeto caneca, algumas de suas propriedades seriam a cor, a capacidade 
máxima e a quantidade de café que possui. Em uma linguagem orientada a 
objetos, podemos definir objetos canecas e acessar suas propriedades. 
Poderíamos também enviar mensagens para os objetos, questionando-
-os sobre a quantidade de café existente em cada caneca. Assim, é possível 
observar que é possível criar e manipular qualquer objeto, fazendo com que 
estes realizem diversas funções em um aplicativo. 
Em uma situação mais cotidiana da plataforma Android, temos o objeto 
câmera, que representa a câmera física do dispositivo. Por meio deste objeto, 
podemos manipular a câmera para que tire uma foto com base nas propriedades 
que definimos e nos métodos que chamamos para configurá-la. 
Antes de criarmos uma classe que represente um objeto, temos de estudar 
os tipos de dados disponíveis, uma vez que a programação é basicamente 
um trabalho com dados. Segundo Goodrich e Tamassia (2013), Java possui 
basicamente dois grupos de tipos de dados:
 � tipos primitivos — correspondem a dados mais simples ou escalares;
 � tipos por referência — correspondem a tipos de dados representados 
por classes, ou seja, todos os outros tipos de dados não primitivos.
Na Figura 1, podemos observar os tipos primitivos de dados existentes 
na linguagem Java, bem como os limites de valores que estes tipos podem 
armazenar. Por exemplo, uma variável do tipo byte não pode armazenar o 
valor 400, visto que esta só armazena dados até 127 positivo.
Linguagem Java: conceitos essenciais2
Figura 1. Tipos primitivos de dados.
Fonte: Schützer e Massago (2008, documento on-line).
Os tipos por referência são classes, conforme já citamos e, por convenção 
de nomenclatura, as classes em Java são nomeadas com a primeira letra do 
nome em maiúsculo. Por exemplo, Goodrich e Tamassia (2013) relatam que 
String é um dos tipos de dados por referência mais comuns da linguagem 
Java, sendo que a String é basicamente uma lista de elementos char. 
Ou seja, podemos armazenar a frase “Android é uma boa plataforma” em 
uma variável do tipo String, em que cada uma das letras seria um char.
3Linguagem Java: conceitos essenciais
Na linguagem Java você pode inserir frases e comentários junto ao código do seu 
aplicativo, sem que estas informações realizem qualquer interferência no fluxo do 
programa. Abaixo temos um exemplo:
//Este é um comentário de uma linha
O texto após as // não é interpretado pelo compilador do Java, ou seja, serve para 
que os desenvolvedores escrevam informações pertinentes no código, seja para 
identificar o que um determinado trecho de código faz ou outra informação qualquer. 
Também podemos criar comentários de várias linhas em Java. Neste caso, o comentário 
é realizado utilizando um bloco, conforme exemplo abaixo (o comentário inicia com 
/* e é finalizado com */):
/* Início do comentário,
Segunda linha do comentário e o
Final do comentário */
Uma variável é basicamente um recipiente que possui um determinado 
tipo, sendo que este define o tipo de dado que a variável irá armazenar. Isso se 
deve ao fato de a linguagem Java ser estaticamente “tipada”, ou seja, devemos 
informar ao Java o tipo da variável que estamos definindo. Abaixo temos um 
exemplo:
String Cliente = "Alberto Ribeiro";
No exemplo acima, criamos uma variável do tipo String, cujo nome é 
Cliente. Ainda podemos identificar o operador de atribuição = (veremos 
adiante outros operadores, sendo o operador de atribuição = um dos mais 
básicos da linguagem Java) e o valor que está sendo atribuído Alberto 
Ribeiro, no final temos o identificador do final do comando ;. Ou seja, 
na variável Cliente temos o texto indicado, sendo o valor armazenado na 
variável que criamos.
Linguagem Java: conceitos essenciais4
O conceito básico de uma classe é apresentado abaixo, em que temos 
uma classe Pessoa com um atributo do tipo String chamado nome e um 
construtor (void Pessoa(String nome)) que inicializa o atributo nome 
com o valor, passado no construtor:
class Pessoa {
 String nome;
 Pessoa(String nome) {
 this.nome = nome;
 }
}
Observe, no exemplo acima, a declaração this. Quando utilizamos essa 
declaração, estamos informando que o atributo utilizado está declarado na 
classe. Logo, this.nome pertence à classe e nome se refere ao parâmetro 
passado ao construtor. 
Abaixo, podemos observar um modelo conceitual de classes,
[class|abstract|interface] [Nome da Classe] {
[Construtor]
[Atributos ou Variáveis]
[Métodos]
}
em que:
 � [class|abstract|interface] — refere-se ao tipo, que pode ser 
class, ou seja, uma classe do tipo class, ou uma interface, sendo que 
este define uma espécie de padrão ou interface padrão que uma classe 
deve implementar. Ainda possuímos a abstract class, que é uma 
classe abstrata, sendo que esta pode conter métodos implementados e 
não implementados (os conceitos de interface e classe abstrata serão 
desenvolvidos no decorrer deste capitulo);
 � [Nome da Classe] — deve ser único no pacote atual e seguir as 
mesmas regras de nomenclatura dos métodos;
5Linguagem Java: conceitos essenciais
 � [Construtor] — um método que é chamado por padrão ao utilizar 
(instanciar) uma classe, sendo que este método pode inicializar os 
atributos da classe ou simplesmente não conter implementação alguma. 
Deve possuir o mesmo nome da classe e sua existência é obrigatória, 
mesmo que não contenha implementação, no caso de se tratar de uma 
interface que não possui nenhum construtor;
 � [Métodos] — segue o padrão já mencionado anteriormente para 
métodos, com a diferença de que, em interfaces, não temos a imple-
mentação do método, apenas sua definição. Os exemplos ficariam 
void Calcula ();, float ValorPI(); e float Total (int 
Qtd, flota Preco); e a classe que implementaressa interface 
deve também realizar a implementação destes métodos.
As classes em Java, além das variáveis e dos atributos, possuem ainda 
métodos, sendo que os métodos podem realizar diversos comandos. A estrutura 
de um método pode ser observada abaixo:
[retorno] [nome do método]([tipo dos dados] [nome do parâme-
tro], …) {
[código do método]
[return] [valor do retorno]
}
Observe, a seguir, o que significa cada termo da estrutura de um método, 
como vimos acima:
 � [retorno] — é o tipo de dado (seja ele primitivo ou do tipo referência) 
que o método irá retornar. Uma vez informado, é obrigatório que seja 
retornado um valor. Para não retornar nenhum valor, informamos ao 
invés do tipo da variável a palavra void, que significa que nada será 
retornado;
 � [nome do método] — nome que remeta à funcionalidade do método. 
As únicas ressalvas ao nomear o método são que caracteres especiais 
e espaços não devem ser utilizados e o nome do método não pode 
conter espaços. Neste caso, podemos utilizar o caractere underline (por 
exemplo, Nome _ Pessoa);
 � [tipo dos dados] [nome do parâmetro] — um método pode 
não possuir parâmetros. Neste caso, utilizam-se os ( ), sem nenhuma 
informação entre os parênteses. Porém, podemos informar um ou mais 
Linguagem Java: conceitos essenciais6
parâmetros, em que o tipo de dados deve ser informado logo após o nome 
do parâmetro, que segue a mesma regra de nomenclatura do método, 
sendo que as várias declarações de parâmetros devem ser separadas 
por ,. Observe que os parâmetros devem receber diferentes nomes;
 � [código do método] — conjunto de códigos que o método realiza;
 � [return] [valor do retorno] — esta linha pode não existir se 
o retorno do método for void. Porém, caso um retorno seja informado, 
o comando return seguido do valor ou da variável do mesmo tipo do 
retorno deve ser também informado.
Exemplo 1 Exemplo 2 Exemplo 3
class Area {
 float area;
 float lado;
 void 
Calcula (){
 this.Area 
= this.Lado 
* this.Lado
 }
}
class Valores {
 float 
ValorPI(){
 return 3.14f;
 }
}
class Produto {
 float Total 
(int Qtd, 
float Preco){
 return 
Qtd * Preco;
 }
}
Quadro 1. Exemplos de métodos
No Quadro 1 observamos três exemplos de possíveis métodos:
 � exemplo 1 — o this indica que as variáveis do método pertencem 
à classe a qual o método também pertence e, no caso, o método está 
atribuindo ao atributo area o resultado da operação de multiplicação 
(representada pelo operador de multiplicação *) do atributo lado por 
ele mesmo (possivelmente seria a área de um quadrado, portanto os 
lados seriam iguais, assim basta armazenar o tamanho de um lado);
 � exemplo 2 — método que retorna um valor do tipo float, no qual temos 
o retorno do valor 3.14f , em que f indica que o valor é do tipo float;
 � exemplo 3 — o método Total recebe dois parâmetros Qtd e Preco, 
realizando a multiplicação desses valores, retornando o resultado deste 
cálculo.
7Linguagem Java: conceitos essenciais
Conceitos e modificadores
Segundo Deitel, Deitel e Wald (2016), na linguagem Java está disponível um 
recurso muito importante para o desenvolvimento e a estruturação de um pro-
jeto: os moderadores de acesso. Estes são empregados para restringir o acesso 
a um método, atributo ou até a uma classe. Entretanto, independentemente do 
moderador escolhido, um atributo ou método é sempre acessível, isto é, pode 
ser chamado, a partir de qualquer outro método contido na mesma classe. Os 
moderadores de acesso mais comuns do Java são os seguintes:
 � public — um atributo ou método que utiliza este moderador é público 
e pode ser chamado a partir de métodos contidos em qualquer outra 
classe, sendo esta a condição de menor restrição da linguagem;
 � protected — utilizando este moderador, o atributo ou método pro-
tegido pode ser chamado por todas as classes existentes no pacote da 
classe em questão; 
 � private — quando um atributo ou um método é privativo na classe 
que o contém e seu uso é vedado a qualquer outra classe, ou seja, so-
mente métodos da própria classe podem executar uma chamada a este. 
Java é uma linguagem amplamente utilizada em diversas áreas, não somente para 
programação Android, mas também em desenvolvimentos para desktops, Web e 
outros. Nos links a seguir você pode acessar o site oficial do Java, além da página com 
a documentação da linguagem e outras informações.
https://qrgo.page.link/E4PEm
https://qrgo.page.link/yaAq8
Além dos moderadores de acesso, os métodos e atributos ainda possuem 
outros modificadores, voltados a outras características. Um destes modifica-
dores é o modificador static, que pode ser utilizado em classes, métodos 
e atributos. Uma vez utilizado em um método, este poderá ser acessado por 
qualquer classe (observando o moderador de acesso) sem a necessidade de 
instanciá-la. Um método static não pode acessar qualquer variável decla-
Linguagem Java: conceitos essenciais8
rada dentro de uma classe, exceto no caso de a variável também ser declarada 
como static. Mas a situação contrária é permitida: um método comum pode 
acessar métodos e atributos static.
Abaixo, temos um exemplo de método do tipo static com o nome getPI. 
Observe que não instanciamos a classe Area:
public class Area {
 public static float getPI(){
 return 3.14f;
 }
}
// Podemos utilizá-lo da seguinte maneira:
Area.getPI();
Outro detalhe sobre o modificador static é que, uma vez utilizado em 
uma classe (static class), obrigatoriamente toda a classe (incluindo 
métodos e atributos) deve ser declarada com o modificador static.
Segundo Goodrich e Tamassia (2013), alguns dos conceitos mais importan-
tes da linguagem Java são o encapsulamento, a herança e o polimorfismo. O 
encapsulamento é uma característica muito importante que trata da capacidade 
de isolar informações do restante do programa. Assim, uma vez construída 
uma determinada classe, o desenvolvedor não precisa mais se preocupar com 
suas características internas, já que realiza as chamadas dos métodos. Caso 
seja necessário realizar alguma alteração em um método, ao realizar esta 
alteração todos os pontos que o utilizam automaticamente irão receber tais 
alterações. Dessa forma, o desenvolvedor pode garantir que a informação não 
será corrompida acidentalmente pelo resto do programa, tornando-a robusta 
e confiável.
Para um desenvolvedor experiente, o conceito de modificadores pode ser muito 
simples, mas para desenvolvedores sem tanta experiência, o uso de modificadores 
pode ser bem confuso. Ao iniciar a programação de aplicativos sem conhecer a fundo 
a linguagem de programação, procure utilizar modificadores mais simples, como o 
public e o private. À medida que for adquirindo experiência, aventure-se a utilizar 
modificadores mais complexos.
9Linguagem Java: conceitos essenciais
A herança é um conceito importante da linguagem Java. Nesse processo, 
uma classe que implementa ou é estendida a outra herda todos os seus métodos 
e atributos. Na Figura 2 temos um exemplo clássico de herança, em que a 
classe Animal é estendida à classe Mamífero, que por sua vez é estendida 
à classe Cachorro. Ao instanciar uma classe Cachorro, este poderá utilizar 
os métodos nascer, morrer e mamar, pois estes serão herdados das classes 
Animal (métodos nascer e morrer) e Mamífero (método mamar). 
Para criar uma classe Gato, por exemplo, seria necessário apenas estendê-la 
à classe Mamífero e implementar o método miar.
Figura 2. Exemplo de classes Java, demonstrando o conceito 
de herança.
Linguagem Java: conceitos essenciais10
Temos, ainda, o modificador abstract, no qual é possível declarar um 
método sem o implementar. Dessa forma, uma classe que implementa a classe 
que contém métodos abstract deve repetir sua declaração abstrata, imple-
mentando-a ou não; porém, em algum momento ela deve ser implementada. 
Funciona como uma espécie de lembrete para que alguma classe derivada 
complete a declaração fornecendo um corpo. 
Na Figura 3 temos umexemplo de classe abstrata, em que a classe Animal 
é do tipo abstract e já possui os métodos nascer e mamar implemen-
tados. No entanto, os métodos voz e alimentar são abstratos e devem ser 
implementados em classes que forem estendidas à classe Animal. No caso, a 
classe Cachorro foi estendida à classe Animal e implementou os métodos 
abstratos voz e alimentar com a implementação adequada.
Figura 3. Exemplo de classes Java, demonstrando o conceito 
de classe abstrata.
11Linguagem Java: conceitos essenciais
O modificador final identifica que nenhuma classe derivada pode alterar 
ou redefinir este método ou atributo. Dessa forma, um método declarado 
como final deve ser obrigatoriamente implementado. No exemplo abaixo, uma 
classe estendida à classe Area não poderá criar uma nova implementação 
para o método getPI.
public class Area {
 public final float getPI(){
 return 3.14f;
 }
}
Segundo Deitel, Deitel e Deitel (2015), a interface é uma funcionalidade 
da orientação ao objeto utilizado em Java que define ações que devem ser 
obrigatoriamente executadas, mas que cada classe pode executar de forma 
diferente. As interfaces contém valores constantes ou assinaturas de métodos 
que devem ser implementados dentro de uma classe.
No caso da Figura 4, podemos observar ainda uma utilização prática das 
interfaces, em que a interface InterfacePessoa prevê todos os métodos 
necessários para uma determinada implementação, sendo que esta interface 
foi implementada pela classe abstrata Pessoa, que implementou os métodos 
getIdade e setIdade, visto que em uma implementação das classes 
Mulher e Homem os métodos indicados teriam uma implementação idêntica 
para ambos os objetos, podendo, dessa forma, serem herdados por estes. 
Uma peculiaridade está no método getSexo, cuja implementação se deu 
na classe Mulher e Homem, em virtude dessa informação ser diferente em 
ambos os casos.
Linguagem Java: conceitos essenciais12
Figura 4. Exemplo de classes Java, demonstrando a utilização de interfaces.
Um dos conceitos mais utilizados da linguagem Java é o polimorfismo, 
que promove a reutilização contínua dos códigos, ou seja, possibilita que 
algo assuma várias formas. No contexto da programação orientada a objetos 
(sendo o Java, conforme já mencionado, uma linguagem totalmente orientada a 
objetos), ele nos mostra como um método pode assumir formas diferentes das 
inicialmente implementadas e agir de modo que possa ser utilizado por outra 
classe. Na Figura 2, em que observamos o conceito de herança (os conceitos de 
herança e polimorfismo trabalham lado a lado na linguagem Java), podemos 
observar o conceito de polimorfismo também quando a classe Pessoa assume 
a forma das classes Homem e Mulher.
13Linguagem Java: conceitos essenciais
Na Figura 5 podemos identificar outra face do polimorfismo. No exemplo, 
os métodos ImprimeIdade, ImprimeSexo e ImprimeSexoIdade 
recebem, por parâmetro, uma classe Pessoa, sendo que esta pode ser do tipo 
Mulher ou Homem e, de acordo com essa passagem de parâmetros, podemos 
ter a impressão do respectivo sexo e idade (a idade, no caso, depende do valor 
atribuído à variável Idade, presente na classe Pessoa). Essa passagem de 
parâmetro genérica se dá pelo fato de que uma mulher ou um homem são 
pessoas, caracterizando um conceito do polimorfismo.
Figura 5. Exemplo de classes Java, demonstrando o conceito de polimorfismo.
Outro conceito do polimorfismo presente na Figura 5 é a sobrecarga, em 
que possuímos na classe Auxiliar três métodos imprime e somente é 
possível possuir estes três métodos com o mesmo nome, em virtude dos métodos 
possuírem parâmetros diferentes. No caso, o método imprime, que realiza a 
impressão da idade, recebe um parâmetro do tipo int, enquanto o método que 
realiza a impressão do sexo recebe um parâmetro do tipo String. Frente à 
Linguagem Java: conceitos essenciais14
sobrecarga prevista no polimorfismo, eles são diferentes; logo, são permitidos. 
Ainda temos o caso do método Imprime, que recebe dois parâmetros que 
se diferenciam ainda mais dos outros e, com isso, também se tornam válidos.
Java na prática: operadores, condicionais, 
laços de repetição
Na linguagem Java é muito comum a realização de cálculos matemáticos ou uma 
comparação entre variáveis, assim como a repetição de uma determinada rotina 
até que uma condição seja atingida. Para que isso seja possível, o Java possui 
operadores. Na Figura 6 podemos observar esses operadores disponíveis na lingua-
gem Java (na ilustração eles estão divididos em grupos, conforme suas funções).
Figura 6. Tipos de operadores disponíveis na linguagem Java.
Fonte: Schützer e Massago (2008, documento on-line).
Segundo Deitel, Deitel e Deitel (2015), os operadores de atribuição, como 
o próprio nome sugere, são capazes de atribuir um determinado valor a algo, 
normalmente uma variável. Um exemplo seria uma variável x do tipo inteiro 
(no caso int), à qual podemos atribuir o valor 10 utilizando a simples ex-
pressão x = 10. Aliado a este operador de atribuição, temos os operadores 
de adição, subtração e divisão. Na Figura 7 é possível observar operações 
de adição (operador +), subtração (operador -), multiplicação (operador *) 
e divisão (operador /), além de uma operação envolvendo duas variáveis. 
Existe, ainda, o operador módulo %, que calcula o resto de uma divisão. Por 
exemplo, x = 5 % 2, em que x ao final da operação será igual a 1, visto 
que este é o resto da divisão.
15Linguagem Java: conceitos essenciais
Podemos, ainda, utilizar o operador de atribuição = combinado aos ope-
radores matemáticos, resultando em expressões mais simples. Por exemplo, 
a expressão de soma x = x + 10 (operação de soma existente na Figura 7) 
poderia ser codificada utilizando o operador de soma combinado ao operador 
de atribuição, gerando a expressão x += 10, que é exatamente o mesmo que 
x = x + 10, sendo que este pode ser realizado com as demais operações 
matemáticas.
Figura 7. Operador de atribuição = em operações matemáticas.
Também temos operações de atribuição que não utilizam o operador =. 
Neste caso, estamos falando dos operadores de incremento e decremento. Por 
exemplo, a operação x = x + 1, que também é idêntica à operação x += 1, 
pode ser escrita de forma ainda mais simplificada, utilizando o operador 
unário de incremento, resultando em x++. Em todos os exemplos citados serão 
somados 1 ao valor já existente em x.
Os sinais unários são utilizados para identificar se um número é positivo 
(sinal unário +) ou negativo (sinal unário -), sendo que ao não informar o 
sinal unário de um número, o programa irá entender que se trata de um nú-
mero positivo. Vamos imaginar a variável do tipo byte recebendo o valor 10 
negativo. Neste caso, teríamos o código byte z = -10, ou seja, a variável 
z será igual a 10 negativo.
Linguagem Java: conceitos essenciais16
Ao declarar os nomes de variáveis e classes, você deve tomar cuidado para não uti-
lizar as palavras reservadas da linguagem Java. Por exemplo, a palavra int deve ser 
utilizada somente em seu propósito original, ou seja, declarar uma variável deste 
tipo. Portanto, você não pode colocar o nome de uma variável como int. A seguir, 
temos uma lista de palavras reservadas da linguagem: abstract, continue, for, 
new, switch, assert, default, goto, package, synchronized, boolean, 
do, if, private, this, break, double, implements, protected, throw, 
byte, else, import, public, throws, case, enum, instanceof, return, 
transient, catch, extends, int, short, try, char, final, interface, 
static, void, class, finally, long, strictfp(2), volatile, const, 
float, native, super e while.
Deitel, Deitel e Deitel (2015) definem os operadores de comparação como 
ferramentas de suma importância para o desenvolvimento de qualquer software, 
seja ele um aplicativo Android ou outro. Essa afirmação se deve ao fato de 
que estes operadores fornecem a linguagem o poder de dar ao código a to-
mada de decisão. Por exemplo, se você desejacomprar um produto que custa 
R$ 12,00 mas possui apenas R$ 10,00 na carteira, a compra não pode ser 
concluída, visto que você não possui dinheiro suficiente. Para inserirmos essa 
tomada de decisão em um código Java, utilizamos a cláusula condicional if, 
que significa “se”. Assim, em uma linguagem formal, já podemos escrever 
o exemplo, ficando “se o dinheiro na carteira for maior ou igual ao valor do 
produto, então a compra pode ser realizada; caso contrário, você não possui 
dinheiro suficiente”. Em Java, teríamos:
float produto = 12f;
float carteira = 10f;
if (carteira >= produto) {
// Entao você possui dinheiro suficiente
}
else {
//Você não pode comprar, dinheiro insuficiente
}
//Segue o fluxo do programa
17Linguagem Java: conceitos essenciais
Dessa forma, já introduzimos também o operador de comparação maior 
ou igual >=. Podemos utilizar também os demais operadores de comparação:
 � >: compara se um valor é maior que outro;
 � <: compara se um valor é menor que outro;
 � <=: compara se um valor é menor ou igual a outro;
 � ==: comparação simples entre dois valores, verificando se ambos são 
iguais e apenas iguais;
 � !=: comparação simples entre dois valores, verificando se ambos são 
diferentes.
A cláusula if pode possuir várias operações de comparação utilizando a 
cláusula elseif(comparação), ou seja, podemos ter o if(comparação 1) 
com a sua comparação, seguido de quantos elseif(comparação2..3..4) 
forem necessários para a lógica do programa, podendo finalizar com o else, 
que significando que caso nenhuma comparação seja satisfeita, o código 
da cláusula else será executado, observando também que somente o if 
é obrigatório. Portanto, podemos utilizar o elseif e o else apenas se na 
lógica da rotina for necessário.
Dentro das cláusulas condicionais, ainda possuímos a cláusula switch, que pode 
simplificar a execução de várias comparações de uma variável. No link a seguir você 
pode obter mais informações sobre a cláusula switch.
https://qrgo.page.link/ungAZ
Para completar este conjunto de operações visto até então, temos os laços 
de repetição, sendo o mais simples deles o while, que em uma linguagem 
formal seria “enquanto uma comparação for satisfeita, repete um conjunto 
de código”. 
Linguagem Java: conceitos essenciais18
Figura 8. Exemplos de operação de “while” e de “do...while”.
Fonte: Schützer e Massago (2008, documento on-line).
Na Figura 8, encontramos alguns exemplos do bloco de repetição while, 
sendo:
 � exemplo 1 — a rotina presente no while é executada enquanto o 
valor de k for menor que 10, ou seja, será executado até que k seja 
incrementado pelo operador unário ++ e atingir o valor 10;
 � exemplo 2 — nesta rotina, h é inicializado com zero e a rotina presente 
no while será executada até que h mude para outro valor, sendo que, 
no caso, isso ocorrerá somente quando o teste if for satisfeito; 
 � exemplo 3 — a variável i é inicializada com o valor 10 e, assim, o 
bloco while não é executado, pois somente seria executado caso i 
fosse menor ou igual a cinco. Dessa forma, o programa segue seu fluxo 
normal após o while;
 � exemplo 4 — no do while, a rotina presente neste bloco é executada 
pelo menos uma vez, podendo repetir novamente se ao final da primeira 
execução o teste do while for satisfeito. No exemplo, a rotina será 
executada apenas uma vez.
19Linguagem Java: conceitos essenciais
O laço de repetição for tem uma complexidade um pouco maior. Na Figura 9 
temos um exemplo ilustrado de uma implementação do laço for. Para um 
melhor entendimento, vejamos mais informações abaixo:
 � int x = 0; — este código é executado apenas uma vez e é chamado 
de inicialização. Nesta inicialização temos a declaração da variável x 
e sua inicialização com o valor zero, sendo que ela não será executada 
novamente. Observe que a variável x poderia estar declarada em outro 
local e, neste caso, ela poderia ser inicializada apenas com x = 0; ou 
nem ser inicializada, contando apenas com a presença do ;;
 � x <= 10; — esta é a condição que verifica se o laço deve ser repetido. 
Após a inicialização ele é verificado e, caso seja satisfeito, a rotina do 
laço é executada uma vez;
 � x++ — este é o incremento (poderia ser decrementado, também utili-
zando -- ou outros operadores, como o += 10) ao final da execução 
da rotina do laço de repetição. A variável x é incrementada e após o 
seu incremento a condição (x <= 10) é verificada, ou seja, quando x 
atingir o valor 11, o laço de repetição não será repetido e o programa 
seguirá seu fluxo.
Figura 9. Ilustração do uso do for.
Fonte: Schützer e Massago (2008, documento on-line).
É importante salientar que os laços de repetição while e for também 
podem ser interrompidos a qualquer momento, executando o comando break;. 
Linguagem Java: conceitos essenciais20
DEITEL, P.; DEITEL, H.; DEITEL, A. Android: como programar. 2. ed. Porto Alegre: Book-
man, 2015. 690 p.
DEITEL, P.; DEITEL, H.; WALD, A. Android 6 para programadores: uma abordagem baseada 
em aplicativos. 3. ed. Porto Alegre: Bookman, 2016. 618 p.
GOODRICH, M. T.; TAMASSIA, R. Estruturas de dados e algoritmos em Java. 5. ed. Porto 
Alegre: Bookman, 2013. 736 p.
SCHÜTZER, W.; MASSAGO, S. Tipos de dados. In: SCHÜTZER, W.; MASSAGO, S. Tutorial 
de programação Java. São Carlos: Departamento de Matemática, Universidade Federal 
de São Carlos, 2008. Disponível em: https://www.dm.ufscar.br/profs/waldeck/curso/
java/part22.html. Acesso em: 16 jun. 2019.
Leitura recomendada
SCHILDT, H. Java para iniciantes: crie, compile e execute programas Java rapidamente. 
6. ed. Porto Alegre: Bookman, 2015. 704 p.
21Linguagem Java: conceitos essenciais

Continue navegando