Algumas dúvidas, alguém tem como me ajudar?

3 respostas
R

Pessoal,

fiz alguns simulados e fiquei com algumas dúvidas, juntei tudo num só tópico, se alguém tiver como me ajudar,muito obrigado.
Voltei a estudar para certificação, e agora é para valer, em3 meses irei fazer a prova, já tenho meu cronograma de estudo e estou sendo fiel.

Primeira dúvida
class Question {
               public static void main(String[]args) {
                  double d1 = 1.0;
                  double d2 = 0.0;
                  byte b = 1;
                  d1 = d1 / d2; 
                  b = (byte) d1;
                  System.out.print(b);
               }
        }

( a ) It results in the throwing of an ArithmeticException;
( b ) It results in the throwing of a DivideByZeroException;
( c ) It displays the value 1.5;
( d ) It displays the value -1.

A Resposta para a pergunta é D. Mas não teria erro de conversão? É possível "colocar"um double dentro de um byte? Alguns dados não seriam perdidos? Ou se realmente perdeu, fez com que se torna-se um novo número? :?

Segunda dúvida:
public class TestClass
         {
            public static void main(String[] args)
            {
                  unsigned byte b = 0;
                  b++;
                  System.out.println(b);
           }
         }
( a ) 0 ( b ) -1 ( c ) 255 ( d ) -128 ( e ) It will not compile A Resposta para a pergunta é E. O que é o unsigned? Fiquei em dúvida ao entender ele. Terceira dúvida
int x = 1;
           String [] names = { "Fred", "Jim", "Sheila" };
           names[--x] += ".";
           for (int i = 0; i < names.length; i++) {
               System.out.println(names[i]);
           }
( a ) The output includes Fred. with a trailing period. ( b ) The output includes Jim. with a trailing period. ( c ) The output includes Sheila. with a trailing period. ( d ) None of the outputs show a trailing period. A resposta é A. Eu entendi até como chegar nessa Resposta 8) , mas aproveitando as vezes em fico em dúvida, com é -- ou ++ na frente da variável ou no final dela. Existe alguma regra? Quarta dúvida Essa aqui é outro exemplo de -- ou ++, e nessa aqui eu errei quando tava no simulado
class InitTest {
          public static void main(String[] args){
              int a = 1;
              int b = 1;
              a = a++;
              a = a++;
              a = a++;
              b = b++ + + b;
              System.out.println(a+ " "+b);
          }
       }
( a ) It will not compile ( b ) It will print 1 3 ( c ) It will print 4 2 ( d ) It will print 4 3 ( e ) It will print 4 4 A resposta é B. Mas Pq? Nessa aqui fiquei bastante confuso :? , principalmente na linha onde tem "b = b++ + + b;" Quinta dúvida Essa daqui, me fez quebrar a cabeça e nem imaginava que ia chegar nessa reposta :shock:
int i = 1;
    int j = i << 31;
    int k = j >> 31;
Ele perguntou o resultado final de K, e eu achava, quando estava fazendo as contas de << e >>, o número volta-se para 1, mas a resposta é -1, pq ? Sexta dúvida Essa daqui é outra dúvida chata.
public class Test {
       public static void main(String args[]) {
           byte x = 3;
           x = (byte) ~x;
           System.out.println(x);
        }
     }
Antes de fazer, eu sabia da existência de uma fórmula para calcular o valor de X, é a fórmula -(X+1), assim eu consegui chegar na resposta, que é -4. Mas esquecendo a fórmula, com calcular o valor de x? Sétima dúvida
int Output=10;
    boolean b1 = false;
    if((b1==true) && ((Output+=10)==20)){
           System.out.println(&quot;We are equal &quot;+Output);
     } else {
           System.out.println(&quot;Not equal! &quot;+Output);
     }
( a ) Compile error, attempting to perform binary comparison on logical data type ( b ) Compilation and output of "Not equal! 10" ( c ) Compilation and output of "Not equal! 20" ( d ) Compilation and output of "We are equal 10" A resposta é B. Aqui eu fiquei bastante perdido, acho que não soube respeitar a ordem para conseguir a resposta correta, como será a ordem? Primeira seta, depois verifica? Oitava dúvida
System.out.println(010|4);
A questão pedia para imprimir o resultado da linha acima, a resposta é 12, mas porque? sei que 010, é um octal, por causa do 0 a frente.

Bem pessoal, o tópico, realmente está grande, mas preferi, do que ficar dividindo em vários tópicos.

Se alguém tiver como me ajudar, muito Obrigado.

3 Respostas

eltonk

cara… a maioria destas questões são com deslocamento de Bits…

Isso não cai mais nas provas de certificação, você está estudando pelo material errado cara 8O

R

Setima

int Output=10;   
boolean b1 = false;   
if((b1==true) && ((Output+=10)==20)){   
       System.out.println("We are equal "+Output);   
} else {   
       System.out.println("Not equal! "+Output);   
}

A resposta é Not equal ! Output 10 .
Porque utilizando o && se o primeiro é false (b1 == true) não se avalia a
segunda expressão.

As outras perguntas como o colega já respondeu .

Isso não cai mais nas provas de certificação, você está estudando pelo material errado cara

P

Vou tentar responder a algumas.

RafaelSantos:
Segunda dúvida:
public class TestClass
         {
            public static void main(String[] args)
            {
                  unsigned byte b = 0;
                  b++;
                  System.out.println(b);
           }
         }
( a ) 0 ( b ) -1 ( c ) 255 ( d ) -128 ( e ) It will not compile A Resposta para a pergunta é E. O que é o unsigned? Fiquei em dúvida ao entender ele.
Algumas linguagens permitem a definição de tipos como unsigned. Isso quer dizer que os valores serão sempre positivos. No exemplo acima, e se Java suportasse unisgned, b teria valores entre 0 e 255 e não entre -128 e 127. Como Java não suporta unsigned, a código não compila.
RafaelSantos:
Terceira dúvida A resposta é A. Eu entendi até como chegar nessa Resposta 8) , mas aproveitando as vezes em fico em dúvida, com é -- ou ++ na frente da variável ou no final dela. Existe alguma regra?
Depende do que pretendes fazer.
int a = 1;
System.out.println(a++); // imprime a (1) e incrementa a (fica 2)
System.out.println(++a); // incrementa a (fica 3) e imprime a (3)
Se a operação estiver antes da variável, primeiro é feito o calculo e só depois é que a variavel é usada. Se estiver depois, primeiro usa a variavel com o seu valor antigo e só depois actualiza.
RafaelSantos:
Quarta dúvida Essa aqui é outro exemplo de -- ou ++, e nessa aqui eu errei quando tava no simulado
class InitTest {
          public static void main(String[] args){
              int a = 1;
              int b = 1;
              a = a++;
              a = a++;
              a = a++;
              b = b++ + + b;
              System.out.println(a+ &quot; &quot;+b);
          }
       }
( a ) It will not compile ( b ) It will print 1 3 ( c ) It will print 4 2 ( d ) It will print 4 3 ( e ) It will print 4 4 A resposta é B. Mas Pq? Nessa aqui fiquei bastante confuso :? , principalmente na linha onde tem "b = b++ + + b;"
Ao fazer a = a++; a fica sempre com valor 1, porque é extraído o valor 1 para usar na atribuição, em seguida a é incrementado para 2 e só depois é feita a atribuição com 1.

b = b++ + + b;
Vou tentar explicar por passos:
b++ > fica 1 na expressão e b passa a ser 2
1 + + b > vai somar 1 com (+b), 1+2 = 3
b fica então com 3

RafaelSantos:
Sétima dúvida
int Output=10;
    boolean b1 = false;
    if((b1==true) && ((Output+=10)==20)){
           System.out.println(&quot;We are equal &quot;+Output);
     } else {
           System.out.println(&quot;Not equal! &quot;+Output);
     }
( a ) Compile error, attempting to perform binary comparison on logical data type ( b ) Compilation and output of "Not equal! 10" ( c ) Compilation and output of "Not equal! 20" ( d ) Compilation and output of "We are equal 10" A resposta é B. Aqui eu fiquei bastante perdido, acho que não soube respeitar a ordem para conseguir a resposta correta, como será a ordem? Primeira seta, depois verifica?
A atribuição nunca é efectuada porque b1==true é sempre falso. Se a instrução fosse if((b1==true) & ((Output+=10)==20)) [só com um &], a resposta seria a C.
RafaelSantos:
Oitava dúvida
System.out.println(010|4);
A questão pedia para imprimir o resultado da linha acima, a resposta é 12, mas porque? sei que 010, é um octal, por causa do 0 a frente.
010 -> 00001000 4 -> 00000100 Fazendo o or dá 00001100, que é 12
Criado 17 de janeiro de 2009
Ultima resposta 9 de fev. de 2009
Respostas 3
Participantes 4