Karteikarten
02

Karten in diesem Stapel (139)
- 1—Imprime 0 ( a = a - 10)
Imprime 100 ( b = b * 100)
Imprime 1 (c = c / 10)
Imprime 0 (d = d % 10)
- 2—Erro (4) : Literais são convertidos automaticamente para byte se forem inteiros entre -128 e 127, mas se for uma operação envolvendo variável o compilador não faz o casting automático pois retorna um int.

- 3—Imprime 7 : b = b + 4 resulta um int mas
b += 4 é convertido automaticamente para byte sem necessidade de casting.
- 4—Imprime 7 : Casting manual.

- 5—Imprime 44 :
a = a + ++a + a + ++a;
a = 10 +11 + a + ++a;
a = 10 + 11 + 11 + ++a;
a = 10 + 11 + 11 + 12;
- 6—Imprime 1 e 2 :
i = (0 * j + j++);
i = (0 * 1 + j++);
i = (0 * 1 + 1);
- 7—Imprime verdadeiro : operador ternário equivalente a if (i == 5 ) { ... } else { ... }

- 8—Erro (4) : i % 2 retorna um int que não pode ser usado em um if, o certo é i % 2 == 0, que retorna um boolean

- 9—Imprime ímpar.

- 10—Erro (4) : short não pode ser convertido para char, apesar de serem do mesmo tamanho, o intervalo é diferente.
char = 0 a 65535 short = -32768 a 32767
- 11—Erro 4 : char não pode ser convertido para short, apesar de serem do mesmo tamanho, o intervalo é diferente.
char = 0 a 65535 short = -32768 a 32767
- 12—Imprime 3.5 : i1 é 1 pois retorna int, i2 é 1.0 pois retorna um int 1 e depois é convertido em double 1.0, i3 é 1.5 pois um dos dois é double então retorna o tipo maior, x + d retorna double, então pode ser colocado em zero.

- 13—(Null pointer exception) : Como & não é short circuit, será verificado c.getPreco e como c é null não pode ser usado operado (.) - COMPILA MAS NÃO EXECUTA

- 14—Não imprime nada : graças ao short circuit c.getPreco não é verificado, não sendo usado o operado (.) executa normalmente, como c é null não entra no if e não imprime nada.

- 15—Erro (3) : long não pode receber double sem casting.
Erro (4) : literais decimais são por padrão double e não cabem em um float.
Erro (5) : char não pode receber literais negativos ou maiores que 65535.
- 16—(Arithmetical Exception) : Não podemos dividir um NÚMERO NATURAL por 0. COMPILA, COMPILA SÓ NÃO EXECUTA.

- 17—Imprime infinity, infinity e -infinity : dividir um NÚMERO NATURAL por 0 COMPILA mas não executa, mas dividir um numero decimal por zero ou um número natural por 0.0 compila e executa, dando +infinity ou -infinity

- 18—Erro (7) : o compilador entende que y pode não ter sido inicializado pois a inicialização não está fora do escopo do if, onde y é usada.

- 19—Erro (6) : Literais decimais são por padrão double e não cabem em uma variável float.

- 20—Imprime 4.0 : a soma tem um float, e como é o tipo maior então o resultado é um float.

- 21—Imprime A57 : Os únicos caracteres válidos como nome de variável são $ e __ então os nomes estão todos válidos.
no if __ é 5 e $$ é 7, como é short circuit, a segunda expressão não é verificada e __ não é decrementada. entra no if pois __ é menor que $$.
- 22—Erro (5) : b1 + b2 retorna um int, que não cabe em byte sem uso de casting.

- 23—Imprime -1 : 127 e -128 são os limites de byte, e como é usado um casting compila e executa.

- 24—Imprime 3 : Na segunda passagem ++i é 3, sendo o resto zero entra no if e dá break imprimindo 3.

- 25—Imprime 1 : Na primeira vez que entra no if i vale 0, e 0 dividido para um número natural é 0, e resto zero, portanto entra no if dando break, como é i++ imprime 1;

- 26—Erro (4) : byte só vai de -128 a 127, 131 não será convertido para byte pelo compilador.

- 27—Erro (4) : Literais negativos não podem ser atribuídos a um char.

- 28—Imprime 68 : 68 - 65 dá 3 e pode ser atribuído a char, se fosse 65 - 68 daria -3 e não compilaria.

- 29—(Arithmetical Exception) : Dividir um NÚMERO NATURAL por 0 EXECUTA, mas dá erro ao compilar.

- 30—Imprime "Resultado da infinity" : Graças a precedência de operadores a divisão é feita antes da concatenação.

- 31—(Arithmetical Exception) : Graças a precedência de operadores, a divisão é feita antes da concatenação com String, e já que não pode dividir um NÚMERO NATURAL por 0, compila (pois o compilador não verifica valores de variáveis) mas dá erro ao executar.

- 32—Erro (3) : Boolean é true e false, só. 1 é int e não pode ser comparada com boolean.

- 33—Imprime 15 é cento e cinquenta
150 é cento e cinquenta e 18 : No primeiro print a soma de int é feita antes da concatenação, no segundo print somente são feitas concatenações. Podemos usar length() em concatenação de String.
- 34—Erro (3) : O parênteses faz com que a String concatenada seja dividida por um double, como não pode então não compila.

- 35—Imprime false :
true == false = false;
!false == true = true;
1 == 0 = false;
- 36—Imprime true:
true == true = true;
!true == true = false;
0 == 0 = true;
- 37—Imprime false : Ao instanciar a foi criado um objeto e colocado Mário no pool de strings. Mas ao instanciar b, por não usarmos literais, o java não busca no pool, criando um novo objeto.

- 38—Imprime true : Ao atribuir a String para a, foi criado um objeto e adicionado ao pool de String, na segunda atribuição, como não foi dado new e sim usado literais, a JVM busca no pool de String, usando a mesma referência. Se alguma das duas for alterada não influencia na outra, o vínculo é quebrado.

- 39—Imprime true : a e b tem mesmo conteúdo.
Imprime false : apesar de ter o mesmo conteúdo, foi usado new em c, então não é feita verificação no pool.
Imprime true : NA CLASSE STRING o método equals foi sobrescrito para comparar o conteúdo, e não o endereço do objeto.
- 40—Imprime true : Se a operação envolver DOIS literais e NENHUMA variável, é adicionada ao pool de Strings.

- 41—Imprime false : Se pelo menos um dos elementos da operação forem uma variável e não literal, o java não adiciona no pool de String.

- 42—Imprime false : Apesar do conteúdo da variável b ser igual a c, retorno de método da classe String não são adicionados ao pool de String, a não ser que retornem o mesmo conteúdo do objeto que chamou o método. Aqui a vale "certificação java" mas é retornado "certificação" e por isso não compila.

- 43—Imprime true, true e true : Devido a retornos de métodos de String serem adicionados ao pool se retornam o mesmo conteúdo da referência que a chamou, todos os casos da questão imprimem true. Quando não retorna o mesmo conteúdo não é adicionado ao pool.

- 44—Imprime true : s1 e s2 são literais, como s2 é literal, o java busca no pool e retorna a referência para o objeto existente.
Imprime false : Se um dos envolvidos na operação for variável e não literal o java não busca no pool.
- 45—Imprime false false : como o sub string não retorna o segundo int do parâmetro, 1,1 não retorna nada, então s2 vale apenas s.

- 46—Imprime true true : Como o método sub string retorna o mesmo conteúdo de s1 que o invocou, então é adicionado ao pool, e portanto a referência e o conteúdo é igual.

- 47—Imprime true e true : equals não está sobrescrito correto, tem que receber object, mas funciona se passar um C ou B. Dentro dele c.x é o x do objeto recebido e x é this.x, ou seja, do objeto que chamou o método.

- 48—Erro (14) : D não extends C e portanto não pode ser instanciada para uma variável do tipo C.

- 49—Erro (3) : A condição de um if deve sempre retornar um booleano.

- 50—Imprime verdadeiro :

- 51—Erro (5) : Um if deve sempre retornar um booleano, aqui foi usado um operador de atribuição e não de comparação, que retorna o valor atribuído (0). Se fosse atribuição de boolean compilaria.

- 52—Imprime igual : Apesar de ser uma atribuição e não comparação, o resultado será o valor que a está recebendo, que é true, então entra e executa o print.

- 53—Imprime falso : Se a instrução for apenas uma, podemo eliminar as chaves.
a é falso, !a é verdadeiro e entra no if, imprimindo falso.
- 54—Erro (5) : Um if sem chaves é obrigatório ter uma instrução entre o if e o else, senão não compila.

- 55—Imprime "Usuário aceito" e "Tente novamente" : A prova pode tentar enganar com identação. if ou else sem chaves só tem uma instrução, se tiver mais de uma entre o if e o else não compila, se tiver mais de uma no else, só a primeira está nele, o resto está fora.

- 56—Erro (4) : Código abaixo de return no mesmo escopo nunca será executado, isto caracteriza um unreachable code e não compila.

- 57—Compila e executa, não imprime nada : Apesar de ser um unreachable code compila.

- 58—Erro (2) : Missing return, deve haver um return para cada situação, criar um else com retorno resolveria, ou adicionar uma exceção abaixo do if.

- 59—Compila e não imprime nada : A exception evita que exista um missing return.

- 60—Imprime 0 : Um array vazio é diferente de um objeto nulo.

- 61—Erro (7) : No if está ocorrendo uma atribuição e não uma comparação, como valor é final, não pode ser alterada, por isto não compila.

- 62—Erro (4) : Atribuição de int retorna um int, e a condição de um if deve sempre resultar em um booleano.

- 63—Erro (3,5) : Java não tem elseif, os dois comandos devem ser separados.

- 64—Erro (6) : if sem chaves e com else só pode ter uma instrução entre eles.
Vale ressaltar que args se for vazio compila mas não executa, pois se é vazio dá null pointer exception. E a segunda instrução do else está fora dele.
- 65—Imprime 20 : Apesar das chaves do switch ser obrigatórias as de cada case são opcionais, inclusive sem elas pode haver várias linhas de instruções. Mas os (:) são obrigatórios.

- 66—Erro (7) : A variável do switch pode ser do tipo numérico NATURAL ou String, inclusive byte, mas os cases também devem ser do mesmo tipo, 128 não cabe em um byte, então não é convertido, é interpretado como int.

- 67—Erro (5,6) : Se a variável do switch é int, os cases não podem ser String, devem ser int também.

- 68—Erro (4) : Variável do switch não pode ser do tipo double, mas pode ser do tipo byte e char.
Erro (6) : Não pode ter dois cases iguais.
- 69—Erro (9) : Variável não pode ser case se não for constante.
Erro (10) : Expressões são aceitas como case, mas devem envolver literais e constantes.
Erro (11) : case não pode ser null.
- 70—Erro (11) : Variável não basta ser final para ser constante, ela deve ser inicializada junto da declaração.

- 71—Imprime Default opção e terceira opção : default não precisa estar como última opção, antes de passar por cada uma o compilador já verifica quais cases existem.
Ao entrar em default não tem break, portanto pula e executa o case 3 também.
- 72—Imprime mais argumentos : length de um array vazio é 0, não null, então vai compilar e executar o case default.

- 73—Erro (6) : tamanhoEsperado não é uma constante e portanto não pode ser um case.

- 74—Imprime Guilherme : A variável do switch pode ser um literal. E se tem um break os cases seguintes não são executados.

- 75—Erro : As chaves de cada case são opcionais, mas as chaves do switch e os (:) de cada case são obrigatórios. Os cases do exemplo estão sem (:).

- 76—Erro (4, 8) : Cases aceitam expressões como soma, multiplicação, etc, mas não comparações.

- 77—Erro (7) : Não pode ter código abaixo de break no mesmo escopo, pois é unreachable code, nunca será executado.

- 78—Imprime null : A classe foi instanciada, então podemos usar o operador (.) com a instância c,

- 79—Erro (4) : Não é possível usar a variável local pois ela não foi inicializada.

- 80—(Array index out of bounds) : Podemos criar um array de tamanho 0, mas mesmo dando new, não podemos acessar nenhuma posição ao executar. idades e pesos podem, pois tem tamanhos maiores que 0, imprimem 0 e 0.0 pois as variáveis foram inicializadas em todas as posições.

- 81—Imprime 0 e 0.0 : Podemos criar um array de tamanho 0, apenas não podemos acessá-lo, mesmo dando new ele não terá nenhuma posição inicializada.

- 82—(Negative Array Size Exception) : Por incrível que pareça, criar um array de tamanho negativo compila, pelo menos não executa, dando erro.

- 83—Imprime 12575 : Podemos omitir o new se passarmos os elementos do array entre chaves. Vale lembrar que só funciona junto com a declaração do array, declarar em uma instrução e inicializar assim em outra resulta em erro de compilação.

- 84—Erro (4) : Não podemos inicializar a variável ocultando o new se a declaração e inicialização forem feitas em instruções diferentes.

- 85—Erro (4) : Não podemos usar o new e passar os valores ao mesmo tempo, ou inicializamos com new ou passando os valores.

- 86—(Array index out of bounds) : Arrays começam com a posição 0 e não 1, portanto um array de 50 posições só vai até a posição número 49; VALE RESSALTAR QUE COMPILA, MAS NÃO EXECUTA.

- 87—(Null pointer exception) : Compila mas não executa pois o new foi dado no array provas, que terá 10 espaços contendo objetos prova não inicializados, apenas declarados, valendo null, ao tentar acessar um desses antes de colocar um objeto instanciado dentro dá erro de EXECUÇÃO.

- 88—Compila e executa : Um array de objeto pode guardar objetos da subclasse do seu tipo.

- 89—Imprime Silveira e Silveira : pois o objeto é um só, referenciado tanto pelo objeto guilherme quanto pela posição 0 do array clientes.

- 90—Erro (4) : Não existe casting nem autopromoção de arrays com variáveis primitivas, apenas polimorfismo com instâncias de classes e suas subclasses.

- 91—Erro (5) : O casting pode ser feito, mas deve ser (Quadrado[ ]), um array e não (Quadrado) um objeto, o casting está errado.
![Erro (5) : O casting pode ser feito, mas deve ser (Quadrado[ ]), um array e não (Quadrado) um objeto, o casting está errado.](https://examtimeassets.s3.amazonaws.com/uploads/media/image/14393970/desktop_9ef30aab-fb07-4784-ba64-2d49dd3d8c15.png)
- 92—Compila e executa : Existe polimorfismo em array.

- 93—Erro (3) : Os colchetes do array não podem vir antes do tipo da variável.

- 94—Erro (4) : Não podemos dar new e definir os elementos de um array em uma só inicialização, ou faz um ou outro.

- 95—Erro (4) : Há duas variáveis de mesmo nome sendo inicializadas.

- 96—(Array index out of bounds) : i é inicializada com o tamanho de x, ou seja, 3, ao tentar acessar x[i] dá erro de EXECUÇÃO, pois as posições de x vai de 0 a 2 não existe posição 3.
![(Array index out of bounds) : i é inicializada com o tamanho de x, ou seja, 3, ao tentar acessar x[i] dá erro de EXECUÇÃO, pois as posiçõ...](https://examtimeassets.s3.amazonaws.com/uploads/media/image/14401858/desktop_b633648d-ef6a-483e-a739-ed56e275fe64.png)
- 97—(Array index out of bounds) : Vai tentar acessar x[-6] = -5;
![(Array index out of bounds) : Vai tentar acessar x[-6] = -5;](https://examtimeassets.s3.amazonaws.com/uploads/media/image/14401976/desktop_eec46b23-ccf6-42f1-877f-d47c9c2970c1.png)
- 98—Imprime 2 -5 e x = { 0,-6 ,-5 }

- 99—Imprime true : O polimorfismo permite uma referência receber com casting um objeto de classe filha. Mas o casting só funciona com array, não com classe. (Object) daria erro,.

- 100—Erro (6) : O polimorfismo permite casting de arrays, mas não permite casting de array para objeto de classe não Array. Devia ser (Object[ ]) e não (Object);

- 101—Imprime 0 :
1. A dimensão é definida com a quantidade de colchetes na declaração, independente da posição.
2. Apenas a primeira dimensão deve ser obrigatoriamente inicializada, o resto é opcional.
- 102—Imprime 20 e 10 : Em um array multidimensional, cada dimensão pode ter um tamanho diferente, não precisa ser quadrado.

- 103—Erro (3) : A declaração definiu 2 dimensões, mas na inicialização apenas 1.
int zyx[ ][ ] = new int[3][ ]; era o certo![Erro (3) : A declaração definiu 2 dimensões, mas na inicialização apenas 1. int zyx[ ][ ] = new int[3][ ]; era o certo](https://examtimeassets.s3.amazonaws.com/uploads/media/image/14403137/desktop_62b74acb-a15f-4a33-b292-3b107884f261.png)
- 104—Imprime 30 : zyx foi definido com um array que contém 3 array de tamanho indefinido. Dentro de cada array foi colocado um outro (x, y e z), na posição 2 foi colocado z que tem tamanho 30.

- 105—Imprime 30 : Mesmo que zyx tenha sido definido com 3 arrays de 10 posições cada, podemos adicionar outro array de tamanho maior em cada array, pois ele substitui a referência por outra.

- 106—Erro (4) : Não podemos colocar um double dentro de um array de int.

- 107—Erro (5) : Não podemos definir o tamanho das dimensões na declaração, só na inicialização.

- 108—Erro (6) : A primeira dimensão da inicialização não pode ser vazia de forma alguma.

- 109—Imprime 10;

- 110—Compila e executa : Um ArrayList pode conster itens repetidos.

- 111—Erro (3) : Não podemos usar ArrayList sem importar a classe.

- 112—Imprime true : contains é o método da classe ArrayList que retorna um boolean indicando se determinado item se encontra dentro da lista.

- 113—Erro (3) : Não podemos usar ArrayList sem importar a classe.

- 114—Imprime true : O método retorna true se existir e for deletado o item, ou false se não existir o item passado.
Imprime 2 : O método remove só remove a primeira ocorrência, independente de quantas vezes o item esteja repetido dentro da lista, só o primeiro é eliminado.
- 115—Erro (3) : Não podemos usar arraylist sem importar a classe.

- 116—Compila e executa : Podemos transformar uma lista em um array através do m´todo toArray. Importante dizer que se for transformar em um array de string deverá ser passado um array de string como argumento, senão não compila.

- 117—Erro (8) : Para transformarmos uma lista em um array de String, devemos passar um array de String como argumento, ou vazio :
nomes.toArray(new String[0]);
Ou do tamanho da lista.
nomes.toArray(new String[nomes.size()]);
- 118—Erro (3) : a transformação da lista para array tá certinho, passou um array do tamanho da lista, mas a classe arraylist não foi importada, portanto não compila.

- 119—Compila e executa : Podemos passar um array de tamanho 0 para criar um array a partir de uma lista, o que não podemos e deixar de passar um array.

- 120—Imprime "certificação" : get e set, são métodos da classe List que devemos passar uma posição, já o método remove ou passamos um objeto, string ou posição.

- 121—Imprime certificação e true : Se usarmos o método remove passando uma posição, será devolvido o item deletado, exceto se a lista for vazia, aí vai dar erro de EXECUÇÃO index out of bounds. Se passarmos um objeto ele retorna true se achar o item e deletar ou false se o objeto não existir.

- 122—(Index out of bounds) : Compila, mas ao executar o java percebe que a lista é vazia e não acha nada para remover.

- 123—Imprime 3 : o método set substitui o item da posição especificada pelo objeto enviado no parãmetro.

- 124—Erro (8) : O correto é passar primeiro a posição, depois o objeto, fazer o inverso não compila.

- 125—Imprime 0 : o método indexOf retorna a posição DA PRIMEIRA OCORRÊNCIA do objeto informado ou -1 se o objeto não existir na lista.

- 126—Imprime -1 : Não existe mais a String certificação, foi substituída pelo java com o método set, portanto o método indexOf retorna -1;

- 127—Imprime 4 : O método addAll adiciona uma lista a outra, empurrando o que estava ali anteriormente para o final da lista.

- 128—Imprime joab.

- 129—Erro (3) : Não podemos usar ArrayList sem importar a classe.

- 130—Imprime true : Quando passamos um objeto no método remove, ele procura este objeto na lista, se ele existir ele retorna true e remove, senão retorna false. Quando passamos a posição ele retorna o item removido ou ocorre index out of bounds se não existir a posição.

- 131—Imprime true e 1 : O método remove elimina apenas a primeira ocorrência do objeto informado, na lista apaga a primeira String a, mas não a segunda, e a lista fica com tamanho 1.

- 132—Imprime 5 : A última ocorrência de b é o sexto elemento, como as posições da lista começa em 0, então a posição retornada é 5 e não 6.

- 133—Imprime [a, amor, b, baixinho] : O método toString de ArrayList foi sobrescrito para percorrer e imprimir a lista, ao invés de imprimir o endereço de memória do objeto, o que é por padrão.
![Imprime [a, amor, b, baixinho] : O método toString de ArrayList foi sobrescrito para percorrer e imprimir a lista, ao invés de imprimir o...](https://examtimeassets.s3.amazonaws.com/uploads/media/image/14411419/desktop_272f4350-a139-4730-aac1-f379820e77c2.png)
- 134—Erro (10) : Para transformar uma lista em array é necessário passar um array vazio ou do tamanho da lista como parâmetro, senão não compila.

- 135—Imprime b :

- 136—Imprime a e d.

- 137—Erro (5,6,7,8) : No método add, primeiro vem a posição, e depois o objeto, fazer o contrário não compila.

- 138—Imprime a : o método next retorna o elemento atual, mas também incrementa a variável que o chama, portanto se temos o next dentro do for e na atualização, o incremento será feito duas vezes, pulando o b, e não o imprimindo.

- 139—Imprime abcd : Se tivesse sido usado um for comum imprimiriea acbd, mas foi usado um foreach, que apenas percorre o array, não o altera.
