Prova 01 - Questões 1. Qual é o papel da JVM no processo de desenvolvimento de software em Java? O que é lido na entrada (da JVM) e o que é gerado na saída (da JVM)? R: O papel da JVM é ler arquivos compilados (.class) que contêm bytecodes e interpretá-los para o sistema operacional em questão. A JVM traduz os bytecodes para código de máquina do processador local. Java é dito multiplataforma porque um arquivo .class pode ser executado em qualquer sistema operacional, desde que tenha uma JVM instalada. 2. Qual é o comando utilizando, via prompt do MS-DOS, para compilar a classe Java abaixo? É possível executar a classe (.class) por meio da JVM? Sim? Não? Justifique sua resposta. public class Questao002 { String nome; int codigo; void imprimirCodigo(){ System.out.println("codigo = " + codigo); } } R: Comando para compilar: "javac Questao002.java" Não é possível executar a classe acima porque a mesma não possui o método main. Quando uma classe é executada por intermédio da JVM, a mesma procura, dentro da classe, pelo método main e ao não encontrá-lo, irá lançada uma exceção. 3. Analise o código Java abaixo e responda: Qual será a saída gerada para "resp"? Será lançada alguma exceção? Qual? Justifique sua resposta. public class Questao003{ public static void main (String args[]){ String vtr[] = {"12","2","25","5","10","0"}; int resp, v1, v2, cont = 0; try{ while (cont < 10){ v1 = Integer.parseInt(vtr[cont]); v2 = Integer.parseInt(vtr[cont+1]); resp = v1 / v2; resp %= 3; System.out.println("Resultado = " + resp); cont += 2; } } catch(ArrayIndexOutOfBoundsException e){ System.out.println("Erro de índice"); } catch(ArithmeticException e){ System.out.println("Operação matemática inválida"); } } } 1 R: Saída gerada para resp: Resultado = 0 Resultado = 2 A exceção a ser lançada é ArithmeticException, pois na terceira passagem pelo laço while a variável "v1" será igual a 10 e "v2" será igual a zero, e a divisão de 10 por zero irá lançar a exceção ArithmeticException. 4. Faça um programa em Java que utilize como valores de entrada o seguinte vetor de inteiros: {30,65,82,32,70,41,21,51,72,97}. Em seguida utilize uma estrutura de repetição para percorrer cada elemento deste vetor e para cada um aplique a seguinte regra: Se o valor for par "Número par maior que 50". e maior que 50 imprima na tela: Se o valor for par "Número par menor que 50". e menor que 50 imprima na tela: Se o valor for impar e maior que 50 imprima na tela: "Número impar maior que 50". Se o valor for impar e menor que 50 imprima na tela: "Número impar menor que 50". R: public class Questao004 { public static void main (String args[]){ int vtr[] = {30,65,82,32,70,41,21,51,72,97}; int num; for (int cont = 0; cont < vtr.length; cont++){ num = vtr[cont]; if (num % 2 == 0 && num > 50){ System.out.println("Número par maior que 50"); } else if (num % 2 == 0 && num < 50){ System.out.println("Número par menor que 50"); } else if (num % 2 != 0 && num > 50){ System.out.println("Número impar maior que 50"); } else{ System.out.println("Número impar menor que 50"); } } } } 5. Faça um programa em Java que solicite ao usuário digitar o código de uma peça e o tamanho da mesma. As peças estão divididas em grupos segundo o seu código. Código "A" indica grupo "A", código "B" indica grupo "B" e assim por diante até o grupo "D". Utilize a classe Scanner para solicitar ao usuário o código da peça e o seu tamanho. Utilize o método nextLine() para obter tanto o código como o tamanho da peça. Em seguida, o tamanho da peça deve ser convertido para int com o método apropriado da classe Wrapper Integer. 2 De posse destas informações (código e tamanho da peça) utilize uma estrutura switch-case para imprimir na tela as informações do grupo e do tamanho da peça, seguindo as seguintes regras: Código da peça Imprima: Código da peça Imprima: Código da peça Imprima: Código da peça Imprima: igual a 'A': "Grupo A com igual a 'B': "Grupo B com igual a 'C': "Grupo C com igual a 'D': "Grupo D com Como não há garantias de válido para o tamanho tratamento de exceções informando que o número é tamanho" + <tamanho> tamanho" + <tamanho> tamanho" + <tamanho> tamanho" + <tamanho> que o usuário irá informar um número da peça (exemplo "12X"), faça o adequado para lançar uma exceção inválido. R: import java.util.Scanner; public class Questao005 { public static void main (String args[]){ Scanner sc = new Scanner(System.in); try{ System.out.println("Digite o código da peça"); String codigo = sc.nextLine(); System.out.println("Digite o tamanho da peça"); String tamStr = sc.nextLine(); int tamInt = Integer.parseInt(tamStr); switch(codigo.charAt(0)){ case 'A': System.out.println("Grupo A com tamanho " + tamInt); break; case 'B': System.out.println("Grupo B com tamanho " + tamInt); break; case 'C': System.out.println("Grupo C com tamanho " + tamInt); break; case 'D': System.out.println("Grupo D com tamanho " + tamInt); break; } } catch (NumberFormatException e){ System.out.println("Número invalido"); } } } 6. O utilitário "javac" é utilizado para: a[ ] b[ ] c[ ] Manipular pacotes escritos na linguagem Java. Compilar arquivos .class, gerando arquivos .java. Emular, em software, uma máquina real para executar arquivos .class. 3 d[ ] Ler definições de classes, escritas na linguagem Java, e compilar as mesmas em arquivos .class. 7. Como os objetos Java e suas referências ficam armazenados na memória da aplicação? a[ ] b[ ] c[ ] d[ ] Os objetos Java ficam armazenados na memória Heap e suas respectivas referências ficam armazenadas na memória stack. Os objetos Java ficam armazenados na memória Stack e suas respectivas referências ficam armazenadas na memória Heap. Tanto os objetos quanto as referências ficam armazenados na memória Stack. Tanto os objetos quanto as referências ficam armazenados na memória Heap. 8. Analise a classe Java abaixo e assinale a alternativa correta. public class Questao008 { public static void main(String[] args) { int x = 30; int y = 14; int z = x--/++y; x %= 3; y /= 3; System.out.print("x = " + x++); System.out.print("; y = " + --y); System.out.print("; z = " + z); } } a[ b[ c[ d[ 9. O ] ] ] ] x x x x = = = = 3; 2; 2; 3; y y y y = = = = 4; 5; 4; 5; atributo estático representa: a[ b[ c[ d[ ] ] ] ] O O O O fluxo fluxo fluxo fluxo padrão padrão padrão padrão z z z z = = = = 2 2 2 2 "out" de de de de da classe System (System.out) entrada e saída de erros. saída de erros. entrada de dados. saída de dados. 10. Analise o código Java abaixo e assinale representa o que será impresso na tela. a alternativa que public class Questao010 { public static void main (String args[]){ int a = 10, b = 5, c = 8; if( a > 5 || b < 4 && c > 10) System.out.print("1, "); if( a > 5 && b > 4 && c > 5) System.out.print("2, "); if((a + b) > 15 || (b + c) <= 13) System.out.print("3"); } } a[ ] 1, 2, 3 4 b[ ] c[ ] d[ ] 2, 3 1, 2 1, 3 11. Em tratamento de exceções, o bloco "try" é utilizado para: a[ ] b[ ] c[ ] d[ ] Demarcar um bloco de código que pode gerar algum tipo de exceção. Oferecer um caminho alternativo a ser percorrido no caso de ocorrer efetivamente uma exceção. Delimitar um bloco de instruções que devam ser executadas independente se ocorrer uma exceção ou não. Para lançar uma exceção utilizamos a cláusula try, seguida do objeto que representa a exceção. 12. Analise o código Java abaixo e assinale a alternativa que indica as linhas que devem ser alteradas para ser realizado um cast explícito. public class Questao012 { public static void main (String args[]){ int a = 10; byte b = 4; long c = 35; 1 2 3 int x = b; byte y = a; int z = c; } } a[ b[ c[ d[ ] ] ] ] Linhas: Linhas: Linhas: Linhas: 1, 2 e 3 2 e 3 1 e 3 1 e 2 13. Assinale a alternativa correta para a declaração de um vetor em Java. a[ ] int vtr[] = new int[5][5]; b[ ] int vtr[][] = new int[5]; c[ ] int vtr[] = new int[5]; d[ ] int[] vtr[] = new int[5]; 14. Analise a classe Java abaixo e assinale representa o que será impresso na tela. a alternativa que public class Questao014{ public static void main (String args[]){ String str = "AaBbCcDdEeFfGgHh"; int cont = 0; do{ cont += 2; System.out.print(str.charAt(cont)); }while(str.charAt(cont) != 'H'); } } a[ ] b[ ] c[ ] d[ ] entrará em loop infinito pois a condição do while nunca será alcançada. AbCdEfGh abcdefgh BCDEFGH 5 15. O pacote JRE é indicado para: a[ ] b[ ] c[ ] d[ ] Quem está interessado em desenvolver aplicações Java para dispositivos móveis. Quem está interessado em desenvolver e executar applets e aplicações Java. Quem está interessado em apenas executar applets e aplicações Java. Quem está interessado em desenvolver aplicações Java para desktop. 6