Prova 1 Flashcards
O que acontece ao tentar rodar um código sem o método main?
Quando um programa é executado, a JVM procura por um método main.
Se não encontra, ela lança um erro na execução.
O código abaixo compila?
public class TestClass{ public static long main(String[] args){ System.out.println("Hello"); return 10L; } }
Sim
Mas só será executado se chamado através de outra classe.
O que acontece ao chamar o método main através de outra classe?
O código executa normalmente.
O código abaixo executa?
public class Gato { public static void main(String[] args){ System.out.println("GATO"); } }
public class Principal{ public static void main(String[] args){ Gato gato = new Gato(); String[] argss = {}; gato.main(argss); } }
Sim
Compila normalmente!
O código abaixo executa?
public class Gato { public static void main(String[] args){ System.out.println("GATO"); } }
public class Principal{ public static void main(String[] args){ Gato gato = new Gato(); String[] argss; gato.main(argss); } }
Não! O código não compila!
A variável argss não foi inicializada.
O código abaixo executa?
public class Gato { public void main(){ System.out.println("GATO"); } } public class Principal{ public static void main(String[] args){ Gato gato = new Gato(); gato.main(); } }
Sim, o código compila normalmente.
Quais dos pacotes abaixo são importados automaticamente pela linguagem java?
java. util.*
java. lang.*
java. io.
java. awt.
java.lang.*
O código abaixo compila?
String mStr = "123"; long m = new Long(mStr);
Sim compila!
A classe long possui um construtor que recebe uma String.
Todas as classes wrapers possuem um construtor que recebe uma String.
Integer num = new Integer(“123”);
O que o código abaixo retorna?
String mStr = “123”;
Long.parseLong(mStr);
Retorna um tipo long (primitivo)
O método parse sempre recebe uma string.
O método valueOf recebe um objeto e retorna um wrapper.
O que o código abaixo imprime?
int i,j,k;
i = j = k = 20;
System.out.println(i+” “+j+” “+k);
20 20 20
O que o código abaixo imprime?
int i,j,k;
int b = i = j = k = 20;
System.out.println(b+ “ “ +i+” “+j+” “+k);
20 20 20 20
O que o código abaixo imprime?
int i;
int b = i = j = k = 20;
System.out.println(b+ “ “ +i+” “+j+” “+k);
Não compila
As variáveis j e k não foram declaradas antes.
O que o código abaixo imprime?
int i,j,k;
int l = 10;
int b= i= j=k = l =20;
System.out.println(b+” “+i+” “+j+” “+k+” “+l);
20 20 20 20 20
O código abaixo compila?
float f2 = 123__345_______667F;
Sim compila!
Pode ocorrer mais de um underline na operação. Contato que estejam entre números o código compila.
O código abaixo compila?
String s = ‘a’;
Não
Char não pode ser convertido para String.
O código abaixo compila?
char a = ‘a’;
String s = (String)a;
Não
Char não pode ser convertido para String.
Posso converter char para String?
Não
Char não pode ser convertido para String.
char a = ‘a’;
String s = (String)a; //Não Compila
Quanto imprime o código abaixo? Integer var = new Integer(5); var++;
6
Classes Wrappers são imutáveis.
Mas neste caso o código é iterado e depois reatribuído para a variável.
var = new Integer( var.intValue()+ 1);
Qual a saída do programa abaixo?
public static void main(String[] args){ Integer val1 = new Integer(5); testInts(val1++); System.out.println(val1); }
public static void testInts(Integer obj){
obj++;
System.out.println(obj);
}
6 6
Ao usar o obj++ no método testInts é criada uma nova referência para variável. Não alterando o valor externo.
Qual a saída do programa abaixo?
public static void main(String[] args){ Integer val1 = new Integer(5); testInts(val1++); System.out.println(val1); }
public static void testInts(Integer obj){ obj++; obj++; System.out.println(obj); }
7 6
Ao usar o obj++ no método testInts é criada uma nova referência para variável. Não alterando o valor externo.
O que imprime o código abaixo? int i = 0; switch(i){ case 0 : System.out.print("Saulo "); case 1 : System.out.print("Java "); break; default : System.out.print("Good Bye"); }
Saulo Java
O método default só é executado quando nenhum dos outros cases são aceitos.
O que imprime o código abaixo? int i = 0; switch(i){ case 0 : System.out.print("Saulo "); case 1 : System.out.print("Java "); default : System.out.print("Good Bye"); }
Saulo Java Good Bye
O método default só é executado quando nenhum dos outros cases são aceitos. Mas na ausência de um break, todos os outros cases são executados.
O que imprime o código abaixo? int i = 0; switch(i){ default : System.out.print("Good Bye"); case 0 : System.out.print("Saulo "); case 1 : System.out.print("Java ");
}
Saulo Java
O método default não precisa ser obrigatoriamente o último.
Mas prevalece a obrigação de usar um break.
O que imprime o código abaixo? int i = 5; switch(i){ default : System.out.print("Good Bye"); case 0 : System.out.print("Saulo "); case 1 : System.out.print("Java ");
}
Good ByeSaulo Java
O método default não precisa ser obrigatoriamente o último.
Mas prevalece a obrigação de usar um break.
O código abaixo compila?
Boolean bool = false;
Sim
Apesar de ser um Wrapper, a atribuição sofre um autobox.
O que o código abaixo imprime?
String V1 = “Um”;
String V2 = “Dois”;
System.out.println( V1.equals(V1=V2) );
False
Primeiro o valor de V1 é avaliado. V1.equals(V1=V2) "Um".equals(V1=V2) Em seguida a operação é executada. "Um".equals("Dois")
Qual o resultado da operação abaixo?
double x = 39.21;
float y = 2.1;
double z = x + y;
Não compila!
2.1 é um double, e não pode ser convertido diretamente para float.
float y = 2.1f;
O código abaixo compila?
int x = !5;
Não
O código abaixo compila?
boolean x = !true;
Sim
Qual o resultado de x e y?
int x = 3;
int y = ++x * 5 / x– + –x;
x is 2 y is 7 Primeiro resolve todos os operadores de incremento e decremento. int y = 4 * 5 / 4 + 2; Só então se executa a operação
O que imprime a operação abaixo?
System.out.println((1>2==4>45)?(“True”):(“False”));
True
O que imprime a operação abaixo?
System.out.println((1>2=4>45)?(“True”):(“False”));
Não compila!
O que o código abaixo imprime?
int x = 0;
if(true||x++>0)
System.out.println(x);
0
A segunda parte da operação não será executada pois a primeira já valida a operação.
O que o código abaixo imprime?
int x = 0;
if(true|x++>0)
System.out.println(x);
1
Mesmo que a primeira parte da operação seja true, será executada a segunda verificação.
O que o código abaixo imprime?
int x = 0;
if(true&&x++>0)
System.out.println(x);
1
A segunda operação será executada.
O que o código abaixo imprime?
int x = 0;
if(false&x++>0)
System.out.println(x);
O valor de X será 1, mas nada será impresso!
Mesmo que a primeira condição já invalide a operação, a segunda condição será executada.
O que o codigo abaixo imprime?
public class Value{ public static void main(String[] args){ for(String val:args){ System.out.println(val); } } }
> > java Value 1 2 3
1
2
3
O que o código abaixo imprime?
public class Switcher{ public static void main(String[] args){ switch(Integer.parseInt(args[1])) { case 0 : boolean b = false; break;
case 1 : b = true; break; } if(b) System.out.println(args[2]); } }
> > java Switcher 1 2 3
Não compila
A variável b foi instanciada dentro do switch. Portanto não pode ser acessada por um membro externo.
O código abaixo compila?
String[] arr = new String[2];
for(String str:arr){
System.out.println(str);
}
Sim! Imprime:
null
null
O que imprime o código abaixo?
String[] vet = new String[2];
for(int i = 0; i < vet.length ; i++){
vet[i].concat(“Num”);
}
for(String ar:vet){
System.out.println(ar);
}
Compila mas lança exceção!
Ele lança uma NullPointerException!
Pois se está tentando concatenar um valor a uma posição null.
Todo vetor de String recebe null a seus valores não atribuídos.
O que imprime o código abaixo?
String[] arr = new String[2];
for(int i = 0; i < arr.length; i++){
arr[i]=i;
}
for(String ar:arr){
System.out.println(ar);
}
Não compila!
int não pode ser convertido para String.
Para funcionar, converta int para String: arr[i]=(new Integer(i).toString());
O que imprime o código abaixo?
String[] arr = new String[2]; for(int i = 0; i < arr.length; i++){ arr[i]=(new Integer(i).toString()); }
for(String ar:arr){
0
1
O código compila normalmente.
O que imprime o código abaixo?
int[] arr = new int[2]; try{ System.out.println(arr[2]); }catch(Exception e) { } System.out.println(arr[1]);
0
Mesmo que se tente acessar um index inexistente do array, o catch pega a exceção.
Vale ressaltar que o mesmo array foi preenchido com o valor padrão do tipo int, que é 0.
O que imprime o código abaixo?
int[] arr = new int[2];
System.out.println(arr[2]);
Lança ArrayIndexOutOfBoundsException
Pois se tenta fazer acesso a uma posição inexistente do array.
Qual das linhas abaixo não compila? String[] sA = new String[] { "aaa"}; // 1 String[] sA = new String[1] { "aaa"}; // 2 String[] sA = new String[1] ; sA[0] = "aaa"; // 3 String[] sA = {new String( "aaa")}; // 4 String[] sA = { "aaa"}; // 5
2
Não se pode inicializar diretamente o vetor que possui tamanho definido.
O código abaixo compila?
String[] sA = new String[1] { “aaa”};
Não
Não se pode inicializar diretamente o vetor que possui tamanho definido.
O que imprime o código abaixo?
String[] arr = new String[2]; try{ System.out.println(arr[2]); }catch(Exception e) { } System.out.println(arr[1]);
null
Apesar de fazer um acesso a uma posição invalida do array, esta exceção é tratada.
Portanto a execução segue normalmente.
Qual a ordem de inicialização de uma classe?
Primeiro se instancia os membros estáticos, na ordem que eles aparecem.
Em segundo os membros de instância, na ordem que aparecem.
Só então o construtor é executado.
O ultimo item da lista é o método main.
O que imprime o código abaixo?
public class Inicializadores { static{ s1 = metodo1("a"); }
public Inicializadores() { s1 = metodo1("g"); }
static String s1 = metodo1("b"); String s3 = metodo1("d"); { s1 = metodo1("e"); } static String s2 = metodo1("c"); String s4 = metodo1("f"); private static String metodo1(String s) { System.out.println(s); return s; }
public static void main(String args[]) { //Inicializadores it = new Inicializadores(); } }
a b c d e f g
O que imprime o código abaixo?
public class Inicializadores { static{ s1 = metodo1("a"); }
public Inicializadores() { s1 = metodo1("g"); }
static String s1 = metodo1("b"); String s3 = metodo1("d"); { s1 = metodo1("e"); } static String s2 = metodo1("c"); String s4 = metodo1("f"); private static String metodo1(String s) { System.out.println(s); return s; }
public static void main(String args[]) { //Inicializadores it = new Inicializadores(); } }
a
b
c
O que o código abaixo imprime?
public static void main(String[] args){ int i = 10; tx(i); System.out.println(i); }
public void tx(int i){
i = 15;
System.out.println(i);
}
Não compila!
O código tenta chamar um método não estático de um método estático.
O que o código abaixo imprime?
public static void main(String[] args){ ref r = new ref(); int i = 10; r.tx(i); System.out.println(i); }
public void tx(int i){
i = 15;
System.out.println(i);
}
15
10
O que o código abaixo imprime?
public static void main(String[] args){ ref r = new ref(); StringBuilder sb = new StringBuilder("Saulo"); r.tx(sb); System.out.println(s); }
public void tx(String s){
System.out.println(s);
}
Não compila!
StringBuilder não pode ser convertido para String.
O que o código abaixo imprime?
public static void main(String[] args){ ref r = new ref(); StringBuilder sb = new StringBuilder("Saulo"); r.tx(sb); System.out.println(sb); }
public void tx(StringBuilder s){
s.append(“V1”);
System.out.println(s);
}
SauloV1
SauloV1