Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Ferramentas e Linguagens de Programação para manipulação de dados 2 Java SE 11 3 Módulos 4 Básico da Linguagem Java POO com Java Mais da Linguagem Java Básico da Linguagem Java 5 Introdução ao Java Variáveis Tipos primitivos e valores literais Operadores Expressões, declarações e blocos Controle de fluxos Arrays Programação orientada a objetos com Java 6 Introdução à POO Classes e objetos Herança Polimorfismo Classes e métodos abstratos Interfaces Tipos enumerados Annotations Mais da Linguagem Java 7 Tratamento de exceções Threads Números e Strings Generics Reflection Collections Expressões lambda I/O Algoritmos em geral Básico da Linguagem Java 8 Introdução ao Java 9 Introdução e conceituação 10 O que é Java? 11 Java Linguagem de programação de alto nível Plataforma Plataformas da tecnologia Java 12 Java SE Java EE Java ME JavaFX Java Standard Edition Java Enterprise Edition Java Micro Edition Plataforma de software multimídia Visão geral das plataformas Java 13 Java SE 14 Java Standard Edition Sua API fornece a funcionalidade principal da linguagem Java É a plataforma principal e a base para Java EE Java ME JavaFX Java SE 15 Define Desde os tipos básicos e objetos da linguagem Java Até classes de alto nível que são usadas para Redes Segurança Acesso à base de dados Desenvolvimento de interface gráfica para usuário (GUI) Análise de XML Java SE 16 É bastante utilizada para o desenvolvimento de aplicações desktop Gráfica Criada com as bibliotecas Acessada através de linha de comando Swing AWT Com interface Java SE 17 Consiste Da API De uma máquina virtual De ferramentas de desenvolvimento De outras bibliotecas de classes e kits de ferramentas Java EE Java Enterprise Edition É construída em cima da plataforma Java SE Fornece uma API e ambiente de tempo de execução para desenvolvimento e execução de aplicações distribuídas baseadas em Internet e Intranet: De grande escala Multi-camadas Escaláveis Confiáveis Seguras 18 Java ME Java Micro Edition Fornece uma API e uma pequena máquina virtual para desenvolvimento e execução de aplicações para pequenos dispositivos Por exemplo: Telefones celulares Palmtops Tablets 19 Java ME API Java ME É um subconjunto da API Java SE Juntamente com bibliotecas de classes especiais úteis para o desenvolvimento de aplicações para pequenos dispositivos Aplicações Java ME São muitas vezes clientes de serviços da plataforma Java EE 20 JavaFX É uma plataforma para a criação de aplicações ricas para internet Usando uma API leve de interface para usuário Bibliotecas JavaFX São instaladas como parte do Java SE Aplicações Java FX Podem ser executadas em vários dispositivos diferentes Desktop Browser Telefones celulares São muitas vezes clientes de serviços da plataforma Java EE 21 Questões de concursos [CESGRANRIO 2011 Petrobras] A linguagem de programação Java, lançada em 1995, tem demonstrado ser muito estável. A respeito dessa linguagem, considere as afirmativas a seguir. (Marque o texto do item como CERTO ou ERRADO) [III] Java é uma linguagem multiplataforma, com enfoque no desenvolvimento de aplicações para a Web. 22 Questões de concursos [CESGRANRIO 2011 Petrobras] A linguagem de programação Java, lançada em 1995, tem demonstrado ser muito estável. A respeito dessa linguagem, considere as afirmativas a seguir. (Marque o texto do item como CERTO ou ERRADO) [III] Java é uma linguagem multiplataforma, com enfoque no desenvolvimento de aplicações para a Web de vários tipos. Gabarito: ERRADO. 23 Questões de concursos [CESGRANRIO 2012 LIGUIGAS – Profissional Júnior – Tecnologia da Informação – Análise de Sistemas] Uma certa tecnologia Java foi projetada para permitir que desenvolvedores criem facilmente aplicações Web com interfaces ricas (RIAs) que se comportem de forma consistente em múltiplas plataformas. 24 Questões de concursos [CESGRANRIO 2012 LIGUIGAS – Profissional Júnior – Tecnologia da Informação – Análise de Sistemas] Essa tecnologia é a [A] JavaServer Faces [B] JavaFX [C] JSP [D] EJB [E] JRE 25 Questões de concursos [CESGRANRIO 2012 LIGUIGAS – Profissional Júnior – Tecnologia da Informação – Análise de Sistemas] Essa tecnologia é a [A] JavaServer Faces [B] JavaFX [C] JSP [D] EJB [E] JRE 26 Visão geral do desenvolvimento com Java 27 Arquivos .java e .class 28 Arquivos .java São arquivos textos que contêm o código fonte Arquivos .class São arquivos gerados da compilação dos arquivos .java pelo compilador javac Arquivos .class 29 Não contêm código nativo para um processador específico Contêm bytecodes É uma linguagem da Máquina do Virtual Java (JVM) São interpretados e executados Pelo comando java Para criar uma instância da JVM Compilação, interpretação e execução 30 .java javac .class JVM 10001 01101 10010 Linux Compilação, interpretação e execução 31 JDK Java Development Kit É o conjunto de ferramentas necessárias para realizar o desenvolvimento de aplicações Java 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 32 JRE Java Runtime Environment É a plataforma Java É composto por dois componentes: Java Virtual Machine JVM Java Application Programming Interface Java API É uma biblioteca de componentes que: Possui vários recursos úteis É utilizada para execução de aplicações Java 33 JRE JRE específico de uma plataforma É necessário instalá-lo um para a plataforma desejada Pois junto com ele vem uma JVM que: Saberá lidar com essa plataforma Conseguirá executar aplicações Java naquele ambiente 34 JVM Java Virtual Machine É a peça-chave para fornecer capacidade de multiplataforma para as aplicações Java “Write once, run everywhere” 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 Pode ser desenvolvida por qualquer organização Desde que siga as especificações para construção de uma JVM 35 JVM É responsável por interpretar e executar o bytecode É provedora de formas e meios de o aplicativo conversar com o sistema operacional No tempo de execução: Carrega os arquivos de classe que contém bytecodes Determina a semântica de cada bytecode individual Executa a computação apropriada O uso adicional do processador e da memória durante a interpretação significa que um aplicativo Java executa mais lentamente do que um aplicativo nativo 36 JIT Compilador Just-in-time É um componente do JRE que melhora o desempenho de aplicativos Java no tempo de execução Ajuda a melhorar o desempenho de programas Java Compilando bytecodes no código de máquina nativo no tempo de execução É ativado quando um método Java é chamado Os bytecodes desse método são compilados 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 37 Esquema 1 38 Esquema 2 39 Esquema 3 40 Esquema 4 41 Questões de concursos [CESGRANRIO 2018 Transpetro – Analista de Sistemas Júnior – Processos de Negócio] O modo de execução de uma linguagem de programação, apesar de não ser obrigatório, é fortemente determinado por características do projeto da linguagem. Isso permite que as linguagens de programação sejam agrupadas pelo modo como são tipicamente processadas. Algumas linguagens são normalmente compiladas diretamente para linguagem de máquina, outras são normalmente interpretadas e, ainda, existe um grupo de linguagens híbridas que são, normalmente, compiladas para uma linguagem intermediária que é interpretada por uma máquina virtual. 42 Questões de concursos [CESGRANRIO 2018 Transpetro – Analista de Sistemas Júnior – Processos de Negócio] Que lista possuium exemplo de cada um dos três grupos de linguagens? [A] C, C++ e Java [B] JavaScript, PHP e Python [C] Perl, Prolog e Cobol [D] Java, Fortran e Prolog [E] Cobol, Fortran e LISP 43 Classificação das linguagens de programação 44 Compiladas Interpretadas C C++ COBOL Fortran Javascript Python PHP LISP Perl Prolog Híbridas Java C# Questões de concursos [CESGRANRIO 2018 Transpetro – Analista de Sistemas Júnior – Processos de Negócio] Que lista possui um exemplo de cada um dos três grupos de linguagens? [A] C, C++ e Java [B] JavaScript, PHP e Python [C] Perl, Prolog e Cobol [D] Java, Fortran e Prolog [E] Cobol, Fortran e LISP 45 Questões de concursos [CESGRANRIO 2011 Transpetro – Analista de Sistemas Júnior] Muito utilizada para desenvolvimento de aplicativos Web, a tecnologia Java tem como principal característica gerar aplicações que rodam em qualquer dispositivo que tenha acesso a Internet, utilizando, entre outros recursos, o software [A] JBC (Java Bytecode Console) [B] JDB (Java Developer Builder) [C] MS (Java Management Server) [D] JAC (Java Application Controler) [E] JVM (Java Virtual Machine) 46 Questões de concursos [CESGRANRIO 2011 Transpetro – Analista de Sistemas Júnior] Muito utilizada para desenvolvimento de aplicativos Web, a tecnologia Java tem como principal característica gerar aplicações que rodam em qualquer dispositivo que tenha acesso a Internet, utilizando, entre outros recursos, o software [A] JBC (Java Bytecode Console) [B] JDB (Java Developer Builder) [C] MS (Java Management Server) [D] JAC (Java Application Controler) [E] JVM (Java Virtual Machine) 47 Questões de concursos [CESGRANRIO 2012 BR Distribuidora – Profissional Júnior – Formação Analista de Sistemas – Ênfase em Java – CRM e Web] Analise o código de um programa Java a seguir. public class TestaArgs { public static void main(String[] args) { System.out.println(args[5]); } } 48 Questões de concursos [CESGRANRIO 2012 BR Distribuidora – Profissional Júnior – Formação Analista de Sistemas – Ênfase em Java – CRM e Web] Considere o seguinte comando: java –hotspot TestaArgs um dois três quatro cinco seis sete O que será impresso pelo programa ao executar esse comando? [A] dois [B] três [C] quatro [D] cinco [E] seis 49 Questões de concursos [CESGRANRIO 2012 BR Distribuidora – Profissional Júnior – Formação Analista de Sistemas – Ênfase em Java – CRM e Web] Considere o seguinte comando: java –hotspot TestaArgs um dois três quatro cinco seis sete O que será impresso pelo programa ao executar esse comando? [A] dois [B] três [C] quatro [D] cinco [E] seis 50 JVM Java Virtual Machine 51 Estrutura da JVM 52 Estrutura 53 Java Heap Space Java Stack Memory Java Stack Memory É usada para: Alocação de memória estática Execução de uma thread Contém: Valores primitivos específicos para um método Referências a objetos que estão em um heap Referenciados a partir do método 54 Java Heap Space É usada para alocação de memória dinâmica para objetos e classes em tempo de execução Armazena os objetos As referências a esses objetos são armazenadas na memória stack Esses objetos, na aplicação: Têm acesso global Podem ser acessados de qualquer lugar 55 Java Heap Space 56 Young Generation Old Generation Permanent Generation É onde os objetos recém-criados começam É para onde os objetos de longa duração são eventualmente movidos da Young Generation Armazena metadados como classes e métodos Questões de concursos [CESGRANRIO 2008 CAPES – Analista de Sistemas] Em que porção da JVM (Java Virtual Machine) são armazenados objetos instanciados em um programa JAVA ? [A] Heap [B] GUnit [C] Stack Pool [D] Dump Buffer [E] Text Segment 57 Questões de concursos [CESGRANRIO 2008 CAPES – Analista de Sistemas] Em que porção da JVM (Java Virtual Machine) são armazenados objetos instanciados em um programa JAVA ? [A] Heap [B] GUnit [C] Stack Pool [D] Dump Buffer [E] Text Segment 58 Questões de concursos [CESGRANRIO 2010 BNDES – Analista de Sistemas – Suporte] Se um servidor de aplicação JAVA está com a HEAP configurada com valor abaixo do necessário, é possível que, por esse motivo, ocorram [A] problemas de data e hora nas aplicações durante o horário de verão. [B] erros de java.lang.OutOfMemoryError nas aplicações. [C] erros de charset, no caso de comunicação entre sistemas heterogêneos. [D] ataques de buffer overflow em códigos vulneráveis. [E] ataques de força bruta nas aplicações que solicitam senha. 59 Questões de concursos [CESGRANRIO 2010 BNDES – Analista de Sistemas – Suporte] Se um servidor de aplicação JAVA está com a HEAP configurada com valor abaixo do necessário, é possível que, por esse motivo, ocorram [A] problemas de data e hora nas aplicações durante o horário de verão. [B] erros de java.lang.OutOfMemoryError nas aplicações. [C] erros de charset, no caso de comunicação entre sistemas heterogêneos. [D] ataques de buffer overflow em códigos vulneráveis. [E] ataques de força bruta nas aplicações que solicitam senha. 60 Garbage collection e garbage collector 61 Garbage collection 62 Coleta de lixo É o processo em que o JRE exclui objetos Quando aquele determina que estes não estão mais sendo usados Não é necessário a destruição explícita dos objetos criados Garbage collection Um objeto é elegível para coleta de lixo quando não houver mais referências a esse objeto Todas as referências a um objeto devem ser descartadas antes que o objeto seja elegível para coleta de lixo Referências mantidas em uma variável são normalmente descartadas quando: A variável sai do escopo em que ela se encontra Um valor null é atribuído à variável-objeto Explicitamente 63 Garbage collector 64 É um programa que está dentro do JRE Não é controlado pelo programador A JVM decide quando executá-lo Libera periodicamente a memória usada por objetos que não são mais referenciados Garbage collector 65 Faz o seu trabalho automaticamente quando determina que é a hora certa Não há um momento pré-determinado Há a possibilidade do programador chamar o gabarge collector Mesmo assim não há garantia de que este irá realmente ser executado no momento que é chamado Método finalize() da classe Object protected void finalize() Pertence à classe Object É chamado pelo Garbage Collector para um objeto Quando o processo Garbage Collection determina que não há mais referências para esse objeto 66 Método gc() da classe System public static void gc() Pertence à classe System Força chamar o Garbage Collector Chamar esse método sugere que a JVM envie esforços para a reciclagem de objetos não utilizados A fim de tornar a memória que eles atualmente ocupam disponível para reutilização rápida Nada garante que ele realmente vá coletar lixo naquele momento Mesmo tentando “forçar” a coleta de lixo 67 Exemplo Classe a; Classe b; Classe c; a = new Classe(“A”); b = a; c = new Classe(“C”); 68 Exemplo b = null; c = new Classe(“D”); 69 Questões de concursos [CESGRANRIO 2011 Petrobrás – Analista de Sistemas Júnior - Engenharia de Software] Considere o seguinte código Java, contido no arquivo R.java 70 Questões de concursos [CESGRANRIO 2011 Petrobrás – Analista de Sistemas Júnior - Engenharia de Software] No momento imediatamente anterior à execução da linha 10, quantos objetos do tipo P, que foram criados na linha 9, tornaram-se elegíveis para ser apanhados para a garbage collection? [A] 0 [B] 1 [C] 4 [D] 5 [E] 9 71 Comentário 72 Objetos elegíveis para coleta de lixo p1 p1 null new P(0) p1 new P(1) p1 new P(2) p1 new P(3) p1 new P(4) Questões de concursos [CESGRANRIO 2011 Petrobrás – Analista de Sistemas Júnior - Engenharia de Software] No momento imediatamente anterior à execução da linha 10, quantos objetos do tipo P, que foram criados na linha 9, tornaram-se elegíveis para ser apanhados para a garbage collection? [A] 0 [B] 1 [C] 4 [D] 5 [E] 9 73 Operadores 74 Operadores aritméticos 75 Operadores aritméticos 76 Adição + Subtração -Multiplicação * Divisão / Módulo ou resto da divisão % Adição + 77 Adição entre tipos numéricos Concatenação de strings Adição + Adição entre tipos numéricos int x = 3 + 6; Concatenação de strings String y = “Kal-El ” + “Gildo Araújo ” + x; y terá valor de “Kal-El Gildo Araujo 9” 78 Adição + Concatenação de strings 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 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) 79 Questões de concursos [CESGRANRIO 2008 TJ/RO – Agente Judiciário – Analista de Sistemas (Desenvolvimento)] O que imprimirá a linha de código em Java a seguir? System.out.println("1+1+1="+1+1+'1’); [A] 1+1+1=21 [B] 3=21 [C] 1+1+1=111 [D] 3=111 [E] 111=111 80 Questões de concursos [CESGRANRIO 2008 TJ/RO – Agente Judiciário – Analista de Sistemas (Desenvolvimento)] O que imprimirá a linha de código em Java a seguir? System.out.println("1+1+1="+1+1+'1’); [A] 1+1+1=21 [B] 3=21 [C] 1+1+1=111 [D] 3=111 [E] 111=111 81 Operadores unários 82 Operadores unários 83 Mais + Indica valor positivo Não é necessário usá-lo em números positivos 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 Operadores de igualdade e relacionais 84 Operadores de igualdade e relacionais 85 Igual a == Diferente de != Maior que > Menor que < Maior que ou igual a >= Menor que ou igual a <= instanceof Tipo do resultado da operação É boolean Exemplo: boolean x = 1 < 2; x recebe true porque 1 é menor que 2 86 Questões de concursos [CESGRANRIO 2008 BR Distribuidora – Analista de Sistemas Júnior – Engenharia de Software] Considere o trecho de código a seguir. 87 Questões de concursos [CESGRANRIO 2008 BR Distribuidora – Analista de Sistemas Júnior – Engenharia de Software] Se x for da classe String e tiver sido inicializado, esse trecho de código Java [A] imprimirá a mensagem, apenas se x não for "0". [B] imprimirá a mensagem, apenas se x não tiver sido inicializado com null. [C] imprimirá a mensagem, independente do valor de x. [D] gerará um erro de compilação. [E] compilará, mas nunca imprimirá a mensagem. 88 Questões de concursos [CESGRANRIO 2008 BR Distribuidora – Analista de Sistemas Júnior – Engenharia de Software] Se x for da classe String e tiver sido inicializado, esse trecho de código Java [A] imprimirá a mensagem, apenas se x não for "0". [B] imprimirá a mensagem, apenas se x não tiver sido inicializado com null. [C] imprimirá a mensagem, independente do valor de x. [D] gerará um erro de compilação. [E] compilará, mas nunca imprimirá a mensagem. 89 Operadores de bits 90 Transformação da base 10 para base 2 91 Transformação da base 10 para base 2 92 Valor incial 128 64 32 16 8 4 2 1 Valor final 93 0 1 0 1 1 1 0 1 93 20 0 0 0 1 0 1 0 0 20 13 0 0 0 0 1 1 0 1 13 -21 1 1 1 0 1 0 1 1 -21 Números binários negativos A linguagem Java utiliza a notação de complemento de dois -21 (10) representa 11101011 (2) em byte: Transformar-se o número negativo para positivo 21 Transformar-se o número positivo da base 10 para a base 2 00010101 Inverte-se os bits 11101010 Soma-se 1 aos bits 11101011 93 Números binários negativos A linguagem Java utiliza a notação de complemento de dois 11101011 (2) em byte representa -21 (10): O bit de sinal é 1 Então é um número negativo Diminui-se 1 dos bits 11101010 Inverte-se os bits 00010101 Transformar-se o número de base 2 para base 10 21 Conclui-se que 11101011 (2) é -21 (10) 94 Operadores de bits 95 Complemento ~ AND & OR | XOR ^ Deslocamento à esquerda << Deslocamento à direita >> Deslocamento à direita sem sinal >>> Operador complemento ~ Inverte o bits de um número Exemplo: byte x = ~20; x recebe -21 Operador unário complemento lógico ! Inverte o valor de um boolean 96 Operador complemento ~ Valor incial 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 97 Operadores AND &, OR | e XOR ^ Operam sobre literais inteiros Se os operandos forem booleanos: O resultado será: Igual ao obtido com operadores: AND condicional && OR condicional || Mas sem curto-circuito Todos os operandos serão avaliados Mesmo sem necessidade Possuem apenas um símbolo cada operador Os operadores condicionais AND && e OR || possuem dois símbolos cada 98 Operadores AND &, OR | e XOR ^ Valor incial 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 AND & 0 1 0 0 1 0 0 1 73 OR I 1 1 1 1 1 1 1 1 -1 XOR ^ 1 0 1 1 0 1 1 0 -74 99 Operador de descolamento à esquerda Operador de descolamento à esquerda << Desloca: Os bits do primeiro operando Para esquerda Pelo número especificado pelo segundo operando Preenche na direita com zero 100 Operador de descolamento à esquerda Exemplo: byte x = 13 << 2; // x recebe 52. 13: 00000000000000000000000000001101 52: 00000000000000000000000000110100 byte y = -21 << 2; // y recebe -84. -21: 11111111111111111111111111101011 -84: 11111111111111111111111110101100 101 Operador de descolamento à esquerda Valor incial 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 102 Operador de descolamento à direita Operador de descolamento à direita >> Desloca: Os bits do primeiro operando Para direita Pelo número especificado pelo segundo operando Preenche na esquerda com zero ou um Dependendo do bit de sinal 103 Operador de deslocamento à direita Exemplo: byte x = 13 >> 2; // x recebe 3. 13: 00000000000000000000000000001101 03: 00000000000000000000000000000011 byte y = -21 >> 2; // y recebe -6. -21: 11111111111111111111111111101011 -06: 11111111111111111111111111111010 104 Operador de deslocamento à direita Valor incial 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 105 Operador de deslocamento à direita sem sinal Operador de deslocamento à direita sem sinal >>> Desloca: Os bits do primeiro operando Para direita Pelo número especificado pelo segundo operando Preenche na esquerda com zero Independentemente do bit de sinal 106 Operador de deslocamento à direita sem sinal 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 107 Operador de deslocamento à direita sem sinal Valor incial 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 108 Questões de concursos [CESGRANRIO 2010 Petrobrás – Analista de Sistemas Júnior – Engenharia de Software] Abaixo são exibidas expressões na linguagem Java, nas quais a e b são variáveis do tipo boolean. Qual, dentre as expressões que, ao ser avaliada, resulta em um valor diferente das demais? [A] (!a | b) ^ true [B] a ^b [C] (a | b) & ! (a & b) [D] (!a | !b) & ( a | b) [E] (a | (b^false)) & ( (a^true) | ! b) 109 Comentários a b A B C D E V V F F F F F V F V V V V V F V F V V V V F F F F F F F 110 Questões de concursos [CESGRANRIO 2010 Petrobrás – Analista de Sistemas Júnior – Engenharia de Software] Abaixo são exibidas expressões na linguagem Java, nas quais a e b são variáveis do tipo boolean. Qual, dentre as expressões que, ao ser avaliada, resulta em um valor diferente das demais? [A] (!a | b) ^ true [B] a ^b [C] (a | b) & ! (a & b) [D] (!a | !b) & ( a | b) [E] (a | (b^false)) & ( (a^true) | ! b) 111 Questões de concursos [CESGRANRIO 2010 Petrobrás– Analista de Sistemas Júnior – Engenharia de Software] Abaixo são exibidas expressões na linguagem Java, nas quais a, b e c são variáveis do tipo boolean. Qual, dentre as expressões que, ao ser avaliada, resulta em um valor diferente das demais? [A] (!c | b ) & ! (a & !b) [B] ((!c & !(a & b )) | b ) [C] ((a & b) |(!a & !b & !c ) | (!a & b )) [D] (!c | b ) & ! (a & !b) [E] ((!a ^ c) | (b & (a ^c))) & !(a & !b & c) 112 Comentários a b c A B C D E V V V V V V V V V V F V V V V V V F V F F F F F V F F F V F F F F V V V V V V V F V F V V V V V F F V F F F F F F F F V V V V V 113 Questões de concursos [CESGRANRIO 2010 Petrobrás – Analista de Sistemas Júnior – Engenharia de Software] Abaixo são exibidas expressões na linguagem Java, nas quais a, b e c são variáveis do tipo boolean. Qual, dentre as expressões que, ao ser avaliada, resulta em um valor diferente das demais? [A] (!c | b ) & ! (a & !b) [B] ((!c & !(a & b )) | b ) [C] ((a & b) |(!a & !b & !c ) | (!a & b )) [D] (!c | b ) & ! (a & !b) [E] ((!a ^ c) | (b & (a ^c))) & !(a & !b & c) 114 Questões de concursos [CESGRANRIO 2012 Petrobrás - Analista de Sistemas Júnior – Engenharia de] Seja o seguinte trecho de código Java, onde o operador >> representa um shift à direita: 115 Comentários Analisando o resultado da execução da classe: (short) ffff9c: 1111 1111 1001 1100 ffff9c >> 2: 1111 1111 1111 1111 1110 0111 (short): 1111 1111 1110 0111 Transformando o valor binário acima em decimal: O bit de sinal é 1: então é um número negativo Diminui-se 1 dos bits: 1111 1111 1110 0110 Inverte-se os bits: 0000 0000 0001 1001 Transformando o número na base 2 para base 10: 25 Conclui-se que o valor na base 2 é -25 na base 10 116 Questões de concursos [CESGRANRIO 2012 Petrobrás - Analista de Sistemas Júnior – Engenharia de Software] O que será exibido no console quando for executado o método main()? [A] -400 [B] -200 [C] -25 [D] 25 [E] 400 117 Questões de concursos [CESGRANRIO 2012 Petrobrás - Analista de Sistemas Júnior – Engenharia de Software] O que será exibido no console quando for executado o método main()? [A] -400 [B] -200 [C] -25 [D] 25 [E] 400 118 Operadores de atribuição 119 Operadores de atribuição 120 Atribuição simples = Atribuição composta op= Operador de atribuição simples = É o operador mais comum de ocorrer Possui função diferente do operador de igualdade == Não é usado para comparação Copia um valor do lado direito para a variável do lado esquerdo Sendo esse valor de: Uma variável Um literal 121 Operador de atribuição simples = Exemplo: int x = 15; Copia o valor literal inteiro 15 para a variável x int y = x; Copia o valor do variável x para a variável y 122 Operadores de atribuição composta 123 Com os operadores aritméticos Incremental += Decremental -= Multiplicativa *= Divisória /= Modular %= Com os operadores de bits &= ^= |= <<= >>= >>>= Operadores de atribuição composta Sintaxe: x op= y; É equivalente a x = (T) (x op y); Casting implícito Sendo: x e y: Operandos op: Operação T: Tipo de x 124 Questões de concursos [CESGRANRIO 2008 TJ/RO – Analista Judiciário – Análise de Sistemas - Desenvolvimento] Em Java, a atribuição composta x += y é equivalente a x = (T) (x + y), onde T é o tipo de x. Com base nesta premissa, considere as duas linhas de programa a seguir. x += y; x = x + y; 125 Questões de concursos [CESGRANRIO 2008 TJ/RO – Analista Judiciário – Análise de Sistemas - Desenvolvimento] A primeira linha compilará, e a segunda linha irá gerar um erro em tempo de compilação, se x e y forem declarados, respectivamente, como: [A] short e int [B] int e short [C] int e char [D] String e int [E] int e String 126 Comentários [A] short e int x += y; Não gera erro Há o casting embutido x = (short) (x + y) x = x + y; Gera erro O resultado da operação é do tipo int É necessário o casting para que x possa receber o resultado 127 Comentários [B] int e short x += y; Não gera erro Há o casting embutido x = (int) (x + y) x = x + y; Não gera erro x é do tipo int O resultado será atribuído a ela é também do tipo int 128 Comentários [C] int e char Variáveis do tipo char podem receber valores de 0 a 65.536 Há a conversão automática de char para int x += y; Não gera erro Há o casting embutido x = (int) (x + y) x = x + y; Não gera erro x é do tipo int O resultado será atribuído a ela é também do tipo int 129 Comentários [D] String e int O operador de adição também trabalha como concatenador de Strings x += y; Não gera erro A variável x do tipo String pode receber a concatenação dela com a variável y do tipo int x = x + y x = x + y; Não gera erro A variável x do tipo String pode receber a concatenação dela com a variável y do tipo int 130 Comentários [E] int e String x += y; Gera erro A variável x do tipo int não pode receber a concatenação dela com a variável y do tipo String x = x + y x = x + y; Gera erro A variável x do tipo int não pode receber a concatenação dela com a variável y do tipo String 131 Questões de concursos [CESGRANRIO 2008 TJ/RO – Analista Judiciário – Análise de Sistemas - Desenvolvimento] A primeira linha compilará, e a segunda linha irá gerar um erro em tempo de compilação, se x e y forem declarados, respectivamente, como: [A] short e int [B] int e short [C] int e char [D] String e int [E] int e String 132 Declarações de controle de fluxo 133 Conceituação 134 Conceituação Controlam a ordem que outras declarações serão executadas Exemplo: while (i < 10) { … i++; } 135 Estruturas de condição e de repetição 136 if-else switch while for Estruturas de condição Estruturas de repetição do-while Estruturas de quebra de controle de fluxo 137 break continue return Questões de concursos [CESGRANRIO 2012 CMB – Analista – Desenvolvimento de Sistemas] Na linguagem Java, a ordem em que as instruções de programa são executadas é denominada [A] desvio condicional [B] núcleo do loop [C] fluxo de programa [D] expressão lógica [E] operação de sequência 138 Questões de concursos [CESGRANRIO 2012 CMB – Analista – Desenvolvimento de Sistemas] Na linguagem Java, a ordem em que as instruções de programa são executadas é denominada [A] desvio condicional [B] núcleo do loop [C] fluxo de programa [D] expressão lógica [E] operação de sequência 139 if-else 140 if É a declaração mais comum Dentre todas as declarações de controles de fluxos Instruções dentro dela Serão executadas se a condição da estrutura for true Condição da estrutura Deve: Vir entre parênteses Retornar um valor booleano 141 if Trecho de código: int x = 15; if (x <= 20) System.out.prinltn(“x <= 20”); Resultado da execução: x <= 20 142 else É opcional É correspondente com o if mais próximo Exemplo: int x = 15; if (x <= 15) if (x == 15) y = 0; else y = 1; Utilização de chaves É uma boa prática para organizar o código Exemplo: if (x <= 15) { if (x == 15) y = 0; else y = 1; } 143 else Identação do código Melhora ainda mais a visualização do código Exemplo: if (x <= 15) { if (x == 15) y = 0; else y = 1; } 144 else Trecho de código: int x = 21; if (x <= 20) System.out.prinltn(“x <= 20”); else System.out.prinltn(“x > 20”); Resultado da execução: x > 20 145 switch 146 Conceituação 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 Corpo da declaração Bloco switch É composto por: Um ou mais rótulos cases Trabalham os casos específicos Apenas um rótulo default Trabalham os casos não específicos 147 Exemplo Trecho de código: 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: x = 15 148 Tipos trabalhados 149 Tipos primitivos byte short char int Classes wrappers Byte Short Character Integer Strings Tipos enumerados Tipos trabalhados até ao Java 6 150 Tipos primitivos byte short charint if/else x switch Declaração if/else Pode testar expressões com base em faixas de valores ou condições 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 String Tipos enumerados 151 Questões de concursos [CESGRANRIO 2014 Petrobras – Técnico(a) de Informática Júnior] Analise o programa Java a seguir. 152 Comentários Resultado da execução: 22231-090 153 Questões de concursos [CESGRANRIO 2014 Petrobras – Técnico(a) de Informática Júnior] Um técnico de informática identifica que esse programa [A] não compila em nenhuma versão da linguagem Java [B] compila apenas a partir da versão Java SE 6, porém apresentará um erro de execução. [C] compila apenas a partir da versão Java SE 7, porém apresentará um erro de execução. [D] compila e executa perfeitamente a partir da versão Java SE 6. [E] compila e executa perfeitamente a partir da versão Java SE 7. 154 Questões de concursos [CESGRANRIO 2014 Petrobras – Técnico(a) de Informática Júnior] Um técnico de informática identifica que esse programa [A] não compila em nenhuma versão da linguagem Java [B] compila apenas a partir da versão Java SE 6, porém apresentará um erro de execução. [C] compila apenas a partir da versão Java SE 7, porém apresentará um erro de execução. [D] compila e executa perfeitamente a partir da versão Java SE 6. [E] compila e executa perfeitamente a partir da versão Java SE 7. 155 while 156 Conceituação Executa uma instrução ou um conjunto de instruções enquanto uma condição for verdadeira Condição da estrutura É feita no início da declaração Deve: Vir entre parênteses Retornar um valor booleano 157 Exemplo Trecho de código: int x = 1; while (x < 11) { System.out.print(x + “, ”); x++; } Resultado da execução: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 158 Questões de concursos [CESGRANRIO 2005 AL/TO – Programador de computador] Analise o algoritmo a seguir implementado em Java. 159 Questões de concursos [CESGRANRIO 2005 AL/TO – Programador de computador] Se o método alg receber como parâmetros, respectivamente, os valores numéricos "100,0", "0,1" e "4", ele retornará o valor: [A] 41 [B] 42 [C] 43 [D] 44 [E] 45 160 Comentários Iteração C T X TR M R V 1 100 0.1 4 1 100 - 0 2 (while) 100 0.1 4 2 110 10 10 3 (while) 100 0.1 4 3 110 11 21 4 (while) 100 0.1 4 4 110 11 32 5 (while) 100 0.1 4 5 110 11 43 161 Questões de concursos [CESGRANRIO 2005 AL/TO – Programador de computador] Se o método alg receber como parâmetros, respectivamente, os valores numéricos "100,0", "0,1" e "4", ele retornará o valor: [A] 41 [B] 42 [C] 43 [D] 44 [E] 45 162 do-while 163 Conceituação Executa uma instrução ou um conjunto de instruções enquanto uma condição for verdadeira Condição da estrutura É feita no final da declaração Deve: Vir entre parênteses Retornar um valor booleano 164 Exemplo Trecho de código: int x = 1; do { System.out.print(x + “, ”); x++; } while (x < 11); Resultado da execução: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 165 while x do-while 166 Declaração while Testa a condição no início Não há garantia de que um loop será executado do-while Testa a condição no final Pelo menos um loop é executado Diferença Consequência Declaração for 167 Conceituação É uma declaração que fornece uma forma compacta para repetir uma faixa de valores Sintaxe: for (inicialização; condição; incremento) { Instruções; } 168 Sintaxe 169 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 Trecho de código: for (int x = 1; x < 11; x++) { System.out.print(x + “, ”); } Resultado da execução: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 170 for each É mais compacto e melhorado É Utilizado para trabalhar com: Collections Arrays O contador vai assumir o valor de cada componente de: Uma collection Um array Recomenda-se a sua utilização sempre que possível 171 for each Trecho de código: 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: JAN, FEV, MAR, JAN, FEV, MAR, 172 for each Trecho de código: List<String> meses2 = new ArrayList<>(); meses2.add("JAN"); meses2.add("FEV"); meses2.add("MAR"); for (String valor : meses2) { System.out.print(valor + ", "); } System.out.println(); for (int i = 0; i < meses2.size(); i++) { System.out.print(meses2.get(i) + ", "); } Resultado da execução: JAN, FEV, MAR, JAN, FEV, MAR, 173 Questões de concursos [CESGRANRIO 2012 Chesf – Profissional de Nível Superior – Analista de Sistemas] Considere o trecho de código que corresponde ao método principal de uma classe em linguagem Java. 174 Questões de concursos [CESGRANRIO 2012 Chesf – Profissional de Nível Superior – Analista de Sistemas] 175 Questões de concursos [CESGRANRIO 2012 Chesf – Profissional de Nível Superior – Analista de Sistemas] Qual o resultado produzido por esse método quando ele é corretamente executado? [A] 0 [B] 1 [C] 2 [D] 3 [E] 5 176 Questões de concursos [CESGRANRIO 2011 Petrobrás – Técnico de Informática] Qual a instrução Java em que o valor da variável x será 13 após o loop ter executado 5 vezes? [A] 177 Comentários x Loop 3 1 5 2 7 3 9 4 11 5 13 - 178 Questões de concursos [CESGRANRIO 2011 Petrobrás – Técnico de Informática] Qual a instrução Java em que o valor da variável x será 13 após o loop ter executado 5 vezes? [A] 179 Questões de concursos [CESGRANRIO 2011 Petrobrás – Técnico de Informática] Qual a instrução Java em que o valor da variável x será 13 após o loop ter executado 5 vezes? [B] 180 Comentários x Loop 1 1 6 2 11 3 17 - 181 Questões de concursos [CESGRANRIO 2011 Petrobrás – Técnico de Informática] Qual a instrução Java em que o valor da variável x será 13 após o loop ter executado 5 vezes? [C] Loop infinito 182 Questões de concursos [CESGRANRIO 2011 Petrobrás – Técnico de Informática] Qual a instrução Java em que o valor da variável x será 13 após o loop ter executado 5 vezes? [D] 183 Comentários x Loop 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 - 184 Questões de concursos [CESGRANRIO 2011 Petrobrás – Técnico de Informática] Qual a instrução Java em que o valor da variável x será 13 após o loop ter executado 5 vezes? [E] 185 Comentários x Loop 5 1 6 2 7 3 8 4 9 5 10 6 11 7 12 - 186 Estruturas de quebra de controle de fluxo 187 Estruturas 188 break continue return break Trecho de código: for (int x = 1; x < 11; x++) { if (x == 5) { System.out.println("Parou no " + x); break; } System.out.println(x); } Resultado da execução: 1 2 3 4 Parou no 5 189 continue for (int x = 1; x < 11; x++) { if (x == 2) { System.out.println(“Saltou o 2”); continue; } System.out.println(x + “, ”); } 190 Arrays 191 Conceituação São objetos que contém um conjunto de valores do mesmo tipo Cada elemento de um array Componente de array É uma variável É acessado por um índice De 0 a n – 1 Onde n é o tamanho do array Tamanho de um array É estabelecido quando o array é criado É fixo 192 Etapas de um array 193 DC IA Declaração Criação Inicialização Acesso Etapas de um array 194 Declaração de um array Colchetes São utilizados na declaração de um array Duas formas: tipo[ ] nomeArray; // É a forma mais recomendada. tipo nomeArray[ ]; Exemplos: byte[] arrayBytes; Candidato arrayCandidatos[]; 195 Criação de um array É onde: O tamanho do array é: Definido Fixado Os componentes do array são inicializados automaticamente com valores padrões dos tipos 196 Criação de um array 197 Duas formas Utilizando o operador newSeguido Do tipo Do tamanho do array Fazendo junção com a fase de inicialização Criação de um array Utilizando o operador new seguido do tipo e o tamanho do array tipo[ ] array = new tipo[n]; Sendo n o tamanho do array Exemplos: // Array declarado e criado. byte[] arrayBytes = new byte[10]; // Array declarado e criado. Candidato[] arrayCandidatos = new Candidato[5]; 198 Criação de um array Fazendo junção com a fase de inicialização tipo[ ] array = {valo1, valo2, valo3, …, valorN}; Sendo o número de valores o tamanho do array Os valores devem estar entre chaves { } Exemplo: // Array declarado, criado com tamanho 6 e inicializado. byte[] arrayBytes = {4, 5, 7, 8, 23, 45}; 199 Inicialização de um array 200 Duas formas Fazendo junção com a fase de criação Fazendo junção com a fase de acesso Inicialização de um array Fazendo junção com a fase de criação tipo[ ] array = {valo1, valo2, valo3, …, valorN}; Sendo o número de valores o tamanho do array Os valores devem estar entre chaves { } Exemplo: // Array declarado, criado com tamanho 6 e inicializado. byte[] arrayBytes = {4, 5, 7, 8, 23, 45}; 201 Inicialização de um array Fazendo junção com a fase de acesso array[0] = valo1; array[1] = valor2; array[n – 1] = valorN; // Sendo n o tamanho do array. Exemplo: byte[] arrayBytes = new byte[2]; arrayBytes[0] = 4; arrayBytes[1] = 5; 202 Acesso aos componentes de um array Cada elemento de um array Componente de array É: Uma variável Acessado por um índice De 0 a n – 1 Onde n é o tamanho do array Sintaxe: array[0] = valo1; array[1] = valor2; array[n – 1] = valorN; 203 Tamanho de um array Trecho de código: byte[] array = {4, 5, 7, 8, 23}; System.out.println(array.length); Resultado da execução: 5 204 for each Trecho de código: 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: JAN, FEV, MAR, JAN, FEV, MAR, 205 Arrays multidimensionais São arrays de arrays Sintaxe: tipo[ ][ ] array = new tipo[n][m]; Onde o par [ ] define uma dimensão 206 Arrays multidimensionais Exemplo: // Dois candidatos e três notas para cada um. double[][] notasProvas = new double[2][3]; notasProvas[0][0] = 9; notasProvas[0][1] = 7; notasProvas[0][2] = 7.5; notasProvas[1][0] = 8; notasProvas[1][1] = 10; notasProvas[1][2] = 8.5; 207 Arrays multidimensionais 208 Questões de concursos [CESGRANRIO 2012 Caixa – Técnico Bancário – Tecnologia da Informação] Considere o programa Java a seguir. package teste; public class Teste { public static void main(String[] args) { int i = 0; int[] vet = {2,2}; for (;i<=1;i++){ vet[i] = i++; System.out.println(“vet” + i + “=” + vet[i]); } } } 209 Comentários Código: public class Teste { public static void main(String[] args) { int i = 0; int[] vet = {2, 2}; for (; i <= 1; i++) { vet[i] = i++; System.out.println("vet" + 0 + " = " + vet[0]); System.out.println("vet" + i + " = " + vet[i]); } } } i vet vet[i] 0 {2, 2} vet[0] 0 1 {0, 2} vet[1] 2 210 Questões de concursos [CESGRANRIO 2012 Caixa – Técnico Bancário – Tecnologia da Informação] O que será exibido no console quando esse programa for executado? [A] vet1=1 vet2=2 [B] vet1=2 vet2=2 [C] java.lang.ArrayIndexOutOfBoundsException [D] vet2=2 [E] vet1=2 211 Questões de concursos [CESGRANRIO 2012 Caixa – Técnico Bancário – Tecnologia da Informação] O que será exibido no console quando esse programa for executado? [A] vet1=1 vet2=2 [B] vet1=2 vet2=2 [C] java.lang.ArrayIndexOutOfBoundsException [D] vet2=2 [E] vet1=2 212 Questões de concursos [CESGRANRIO 2011 Petrobras – Analista de Sistemas Júnior – Infraestrutura] Considere o programa em linguagem Java abaixo. 213 Comentários Código: public class C{ public static void main(String []args){ int matriz[][] = {{0, 1, 1, 0}, {1, 1, 0, 1}, {0, 0, 1, 0}}; int[] vetor = new int[matriz.length]; // Array de três posições. ... 214 matriz [0] [1] [2] [3] [0] 0 1 1 0 [1] 1 1 0 1 [2] 0 0 1 0 vetor [0] 0 [1] 0 [2] 0 Comentários Código: public class C{ ... for (int i = 0; i < matriz.length; i++) { int c = 1; for (int j = 0; j < i; j++) { if (matriz[i][j] == 1) { if (c == vetor[j]) { c++; } } } vetor[i] = c; } ... 215 vetor Valor anterior Novo valor [0] 0 1 [1] 0 2 [2] 0 1 matriz [0] [1] [2] [3] [0] 0 1 1 0 [1] 1 1 0 1 [2] 0 0 1 0 Comentários Código: public class C{ ... for (int i = 0; i < matriz.length; i++) { System.out.print(vetor[i]); } } } i vet vet[i] 0 {2, 2} vet[0] 0 1 {0, 2} vet[1] 2 216 Questões de concursos [CESGRANRIO 2011 Petrobras – Analista de Sistemas Júnior – Infraestrutura] O que é impresso pelo programa fornecido? [A] 112 [B] 113 [C] 121 [D] 123 [E] 124 217 Questões de concursos [CESGRANRIO 2011 Petrobras – Analista de Sistemas Júnior – Infraestrutura] O que é impresso pelo programa fornecido? [A] 112 [B] 113 [C] 121 [D] 123 [E] 124 218 Questões de concursos [CESGRANRIO 2010 BR Distribuidora – Analista de Sistemas Júnior – Infraestrutura] 219 Questões de concursos 220 Questões de concursos [CESGRANRIO 2010 BR Distribuidora – Analista de Sistemas Júnior – Infraestrutura] O código acima (testApp.java) está sendo construído por um analista. Entretanto, ele apresenta um erro que é acusado durante o processo de compilação. 221 Questões de concursos [CESGRANRIO 2010 BR Distribuidora – Analista de Sistemas Júnior – Infraestrutura] Qual é a linha que contém este erro? [A] Merge(arrayA, 4, arrayB, 6, arrayC) [B] Display(arrayC, arrayC.length) [C] while (aDex < sizeA && dDex < sizeB) [D] if (arrayA[aDex] <> arrayB[aDex]) [E] System.out.println(theArray[j] + " ") 222 Questões de concursos [CESGRANRIO 2010 BR Distribuidora – Analista de Sistemas Júnior – Infraestrutura] Qual é a linha que contém este erro? [A] Merge(arrayA, 4, arrayB, 6, arrayC) [B] Display(arrayC, arrayC.length) [C] while (aDex < sizeA && dDex < sizeB) [D] if (arrayA[aDex] <> arrayB[aDex]) if (arrayA[aDex] != arrayB[aDex]) [E] System.out.println(theArray[j] + " ") 223 224 225 Lavf58.29.100
Compartilhar