Miscellaneous Flashcards

1
Q

package com.udayan.oca;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test {
public static void main(String[] args) {
List dryFruits = new ArrayList<>();
dryFruits.add(“Walnut”);
dryFruits.add(“Apricot”);
dryFruits.add(“Almond”);
dryFruits.add(“Date”);

     Iterator iterator = dryFruits.iterator();
     while(iterator.hasNext()) {
         String dryFruit = iterator.next();
         if(dryFruit.startsWith("A")) {
             dryFruits.remove(dryFruit);
         }
     }

     System.out.println(dryFruits);
} }

Qual problema pode ocorrer ao executar esse codigo?

A

ConcurrentModificationException exception sera lancada. So posso remover/adicionar items em uma lista que esta sendo iterada, se eu utilizar o proprio objeto iterator.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

package com.udayan.oca;

import java.util.ArrayList;
import java.util.List;

public class Test {
     public static void main(String[] args) {
         List list = new ArrayList<>();
         list.add(0, 'V');
         list.add('T');
         list.add(1, 'E');
         list.add(3, 'O');
     if(list.contains('O')) {
         list.remove('O');
     }
         for(char ch : list) {
             System.out.print(ch);
         }
     }
}

Qual o problema desse codigo?

A

Lancara uma RuntimeException, porque ‘O’ em list.remove(‘O’) sera auto-boxed para int, ao inves de Character, entao isso ira lancar um ArrayIndexOutOfBoundsException.
Ficar atento com a regra de autoboxing do Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
public class Test {
     public static void main(String[] args) {
         m1(); //Line 3
     }
 private static void m1() throws Exception { //Line 6
     System.out.println("NOT THROWING ANY EXCEPTION"); //Line 7
 } } Qual o erro desse codigo?
A

O metodo m1 esta declarando uma Exception, por nao ser do tipo Runtime, eu preciso declarar ela no metodo main ou trata-la.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
public class Test {
     public static void main(String[] args) {
         Double [] arr = new Double[2];
         System.out.println(arr[0] + arr[1]);
     }
}

Qual o erro desse codigo?

A

arr eh um array to tipo Double, entao ao chamar arr[0], o objeto ira chamar arr[0].doubleValue() (para pegar o valor do tipo primitivo) e entao lancara uma NullPointerException.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

import java.util.ArrayList;
import java.util.List;

class Student {
     private String name;
     private int age;
 Student(String name, int age) {
     this.name = name;
     this.age = age;
 }

 public String toString() {
     return "Student[" + name + ", " + age + "]";
 } }
public class Test {
     public static void main(String[] args) {
         List students = new ArrayList<>();
         students.add(new Student("James", 25));
         students.add(new Student("James", 27));
         students.add(new Student("James", 25));
         students.add(new Student("James", 25));
     students.remove(new Student("James", 25));

     for(Student stud : students) {
         System.out.println(stud);
     }
 }

Qual a saida desse codigo?

A

Student [James, 25]
Student [James, 27]
Student [James, 25]
Student [James, 25]

Nenhum objeto anterior vai ser removido da lista, porque eu nao estou passando a referencia de um objeto ja criado e sim criando um novo objeto na memoria que tem os valores iguais a de outro objeto. Resumindo, a linha com o remove() nao vai fazer nada porque ele nao vai encontrar esse novo objeto na lista.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
public class Test {
     public static void main(String [] args) {
          LocalDate date = LocalDate.of(2020, 9, 31);
          System.out.println(date);
     }
}

Qual o problema desse codigo?

A

O codigo ira lancar uma DateTimeException, porque setembro vai ate 30.
Lembrar que LocalDate overrides o metodo toString(), entao se fosse uma data valida ele iria printar sem problema.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
public class Test {
     public static void main(String[] args) {
         System.out.println("Output is: " + 10 != 5);
     }
}

Qual o problema desse codigo?

A

O problema eh que o Java vai concatenar primeiro a string com o 10. Depois vai tentar comparar a nova String com um inteiro e isso ai vai dar erro de compilacao. Portanto, preciso ter mais atencao com a questao da precedencia dos operadores.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

LocalDate is final entao nao pode ser extendida.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
public class Test {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        System.out.println(sb.append(null).length());
    }
}

Qual o problema desse codigo?

A

Como StringBuilder aceita varios objetos como parametros (String, char[] e StringBuffer), passar um null como parametro faz com que o Java nao saiba qual overload do metodo eu quero utilizar, fica uma chamada ambigua, consequentemente ele nao vai compilar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ter atencao com os metodos que tem varios overloads e que aceitam tipos primitivos e seus respecitvos Wrappers.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quando o valor default de uma variavel do tipo primitivo char eh printado, o valor printado sera vazio.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

public static void main e static public void main sao ambos validos no Java.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

posso armazenar um char em uma variavel do tipo int e o inverso tambem acontece (contanto que esse valor inteiro esteja entre o range do tipo char).

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Variaveis com escopo local nao podem ter sua inicializacao dependente de uma estrutura condicional (if-else, switch), vai dar erro de compilacao.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Strings concatenadas serao armazenadas na string pool se ambas forem constantes em tempo de compilacao. Se alguma parte da concatenacao for uma variavel, entao a string sera armazenada na memoria HEAP.

Obs: isso so vale para constantes que nao estejam armazenadas em variaveis, ou seja, “texto” e nao: String x = “texto”;

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly