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

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
[code]
   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);
           }
    }
[/code]

    ( 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
   [code]
       int x = 1;
       String [] names = { "Fred", "Jim", "Sheila" };
       names[--x] += ".";
       for (int i = 0; i < names.length; i++) {
           System.out.println(names[i]);
       }
   [/code]
   ( 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
  [code]
   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);
      }
   }
 [/code]
( 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
[code]
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);
 }
[/code]
 ( a ) Compile error, attempting to perform binary comparison on logical data type
 ( b ) Compilation and output of &quot;Not equal! 10&quot;
 ( c ) Compilation and output of &quot;Not equal! 20&quot;
 ( d ) Compilation and output of &quot;We are equal 10&quot;    
 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
[code]
  System.out.println(010|4);
[/code]
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.

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

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

Vou tentar responder a algumas.

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.

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.

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

[quote=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?
[/quote]
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.

010 -> 00001000
4 -> 00000100
Fazendo o or dá 00001100, que é 12