• Nenhum resultado encontrado

5.4 Declarações de Interrupção e Desvio

No documento Linguagem Java COMPLETA (páginas 51-54)

Declarações de interrupção permitem que redirecionemos o fluxo de controle do programa. A linguagem Java possui três declarações de desvio do fluxo de processamento ou sua interrupção. São elas: break, continue,

return (há ainda try-catch-finally que será visto no capítulo que trata de exceções). 5.4.1 Declaração break

A declaração break possui duas formas: unlabeled (não identificada - vimos esta forma com a declaração

switch) e labeled (identificada).

5.4.1.1 Declaração unlabeled break

A forma unlabeled de uma declaração break encerra a execução de um switch e o fluxo de controle é transferido imediatamente para o final deste. Podemos também utilizar a forma para terminar declarações for,

while ou do-while. Por exemplo:

public class UnlabeledBreak {

public static void main(String[] args) {

String soletrar = "Pneumoultramicroscopicossilicovulcanoconiótico"; int tamanho = soletrar.length();

int i;

boolean encontrou = false; char procurarpor = 'ó';

for (i = 0; i < tamanho; i++) {

if (soletrar.charAt(i) == procurarpor) { encontrou = true; break; } } if (encontrou) {

System.out.println("Encontrei a letra " + procurarpor + " na posição " + i + "");

} else {

System.out.println("A letra " + procurarpor

+ " não está na maior palavra do Português"); }

} }

Listagem 5.3 – Iterador FOR com LABEL

Neste exemplo, se o caracter "ó" for encontrado, a declaração for será interrompida e o controle do programa será transferido para a próxima instrução abaixo da declaração for.

5.4.1.2 Declaração labeled break

A forma labeled de uma declaração break encerra o processamento de um laço que é identificado por um

label especificado na declaração break.

Um label, em linguagem Java, é definido colocando-se um nome seguido de dois-pontos, como por exemplo:

teste:

esta linha indica que temos um label com o nome teste.

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores. infinitamente se não houvesse uma declaração break externo, na linha 15. Quando a condição na linha 13 for satisfeita o labeled break terminará a execução do laço externo indo direto para linha 21, assim a linha 18 nunca será executada.

public class LabeledBreak {

public static void main(String[] args) { int i = 0;

externo: while (true) { //infinito

System.out.println("Dentro Laço (while) externo"); while (true) {

i++;

System.out.println("i = " + i); if (i == 3) {

System.out.println("break (laço interno) i="+i); break;

}

if (i == 2) {

System.out.println("break externo i="+i); break externo;

} }

System.out.println("fora laço (while) interno i="+i); }

System.out.println("Fora laço (while) externo i="+i); }

}

Listagem 5.4 – Iterador While com Label 5.4.2 Declaração continue

A declaração continue tem duas formas: unlabeled e labeled. Utilizamos uma declaração continue para saltar a repetição atual de declarações for, while ou do-while.

5.4.2.1 Declaração unlabeled continue

A forma unlabeled salta as instruções restantes de um laço e avalia novamente a expressão lógica que o controla.

5.4.2.2 Declaração labeled continue

A forma labeled da declaração continue interrompe a repetição atual de um laço e salta para a repetição exterior marcada com o label indicado.

public class TesteContinue {

public static void main(String[] args) { int i = 0;

outer: while (true) {

System.out.println("laço Outer"); while (true) {

i++;

System.out.println("i = " + i); if (i == 1) {

System.out.println("continue"); continue;

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores.

if (i == 3) {

System.out.println("continue outer"); continue outer;

}

if (i == 5) {

System.out.println("break"); break;

}

if (i == 7) {

System.out.println("break outer"); break outer; } } } } }

Listagem 5.5 – Interrompendo Iteradores com CONTINUE LABEL

5.4.3 Declaração return

A declaração return é utilizada para sair de um método. O fluxo de controle retorna para a declaração que segue a chamada do método original. A declaração de retorno possui dois modos: o que retorna um valor e o que

não retorna nada.

Para retornar um valor, escreva o valor (ou uma expressão que calcula este valor) depois da palavra chave

return. Por exemplo:

return ++count; ou

return "Hello";

Abordaremos as declarações return nas próximas lições, quando falarmos sobre métodos.

No documento Linguagem Java COMPLETA (páginas 51-54)

Documentos relacionados