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

13 respostas
rafaelsantos1983

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("We are equal "+Output);
     } else {
           System.out.println("Not equal! "+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.

13 Respostas

J

segunda dúvida: unsigned não é palavra reservada, por isso não compila. simplesmente foi colocado para confundir…

terceira dúvida.: quando – ou ++ vem antes da variável, o valor dela é modificado antes de fazer qualquer outra operação, quando vem depois, apenas depois de executar as operações…
seguinte o seu mesmo exemplo que você deu, porém com o – depois da variável:

int x = 1;
String [] names = { "Fred", "Jim", "Sheila" };
names[x--] += ".";
for (int i = 0; i < names.length; i++) {
   System.out.println(names[i]);
}

“.” não será atribuido a string “Fred”, e sim a string “Jim”.

sétima dúvida…

como b1 é false, e sempre que vc usar o operador && e a primeira condição retornar false, ele não executa a segunda parte da expressão. E no caso do operador || se a primeira condição retornar true, a segunda parte da expressão não é executada.
010 em binário => 1000
4 em binário => 0100
utilizando o operador | acontecerá isso:
1000
0100
1100

transformando 1100 de binário para decimal, será 12.

espero que tenha ajudado :smiley:

[]´s

rafaelsantos1983

jhonatandarosa, Obrigado pela ajuda.

Cai nessa pegadinha sobre o unsigned.

Sobre o – e ++, você falou que quando é colocado depois ele o valor é modificado apenas depois de executar as operações.
a gente terai:

int  x = 1
   names[x--] = names[x--] + "."'; //Aqui ele ficou igual a 1, blz entendi
   //Quando X irá virar 0? O que teria no código para provocar isso?

Na sétima dúvida, então primeiro ele verifica o b, para depois setar né? existe uma ordem?

E como converter octal para decimal?

E você está ajudando e muito.

J

essa do – e ++ antes e depois da variável…
execute esses comandos, observando os valores das variáveis, que vc vai entender melhor o que estou falando :wink:

int x = 1;
int y = 1;

System.out.print("x = "+ --x);
System.out.println(" y = "+ y--);
System.out.println("x = " + x + " y = " + y);

quanto a sétima dúvida, ele não está atribuindo o valor true a váriavel b(b=true), e sim comparando.(b==true).
então o valor de b não é modificado.

pra converter de octal para decimal eu não lembro bem a fórmula, só consegui fazer pq é um número pequeno…
e tipo… nesse caso… em base octal, os números variam de 0 a 7. e quando fosse o valor 8, iria para a próxima casa.
00 = 0 03 = 3 06 = 6
01 = 1 04 = 4 07 = 7 => como chegou no último valor possível para esta casa, inicia na próxima
02 = 2 05 = 5 010 = 8 :wink:

[]´s

J

quanto a quinta e a sexta dúvida, não sei te explicar direito… mas dá uma olhadinha aqui…
http://www.numaboa.com.br/informatica/java/matBitBit.php

:smiley:

rafaelsantos1983

jhonatandarosa muito obrigado, entendi como converter.

e sobre os – e ++, quando é depois, ele só muda de valor, quando
e utilizado na próxima linha, na mesma, ainda continua o mesmo valor, certo?
então, naquela minha quarta dúvida:

int a = 1;
int b = 1;
a = a++;
a = a++;
a = a++;
b = b++ + + b;

A sempre vai ser 1, no final.
B no b++ ainda é 1, depois + + b, onde b agora já é 2, e no final ele soma 1 + + 3, e esse + + é no final das contas uma soma simples, estou certo :?:

rafaelsantos1983

jhonatandarosa:
quanto a quinta e a sexta dúvida, não sei te explicar direito… mas dá uma olhadinha aqui…
http://www.numaboa.com.br/informatica/java/matBitBit.php

:smiley:

Muito bom esse site, irei “devorá-lo” hehehehehe

J

Sim, isso mesmo no final é apenas uma soma simples :smiley:
e acontece exatamente da forma que vc falou…
hehehehe

ainda to tentando descobrir o porque da primeira questão que vc colocou… ^^

[]´s

rafaelsantos1983

Na primeira:

double d1 = 1.0;  
           double d2 = 0.0;  
           byte b = 1;  
           d1 = d1 / d2;   
           b = (byte) d1;  
           System.out.print(b);

Ele faz um cast de double para byte, eu to achando que ele consegue converter, mas perde valor(0’s e 1’s) e muda para outro valor, no caso -1.

Não seria por isso?

J

cara… sei que quando é número inteiro… se dividir por zero, é lançada uma exceção…
porém, com double… ele consegue dividir…e o resultado… é "infinity"
basta vc imprimir o valor de d1 após a divisão.

agora pq que “infinity” convertido pra byte dá -1 eu não sei :frowning:

[]'s

rodrigo.ferreira

Rafael, seguinte:

Você está estudando pra versão antiga da prova, que não existe mais...

 A prova 5/6 da SCJP deixa você mais longe dos bytes e mais próximo da API. Não espere este tipo de questões no exame real...

Abraço,

rafaelsantos1983

Que Ótimoa notícia você me deu Rodrigo, minha segunda-feira melhorou e muito.

Essa questão eu tirei de um simulado da 1.4, uns que eu tinha ainda de começar a estudar para a 1.5.

rodrigo.ferreira

Blz Rafael… rsrsrs

Esqueça esse negócio de conversões binárias, operadores de bitwise, precedência, etc… estude mais a API e as novas tecnologias do Java 5/6… concentre-se nestes tópicos:

* Muitos Fundamentos
        * Collections
        * Generics
        * Threads
        * Desenvolvimento em linha de comando

Use o livro da Kathy Sierra, que é 10 e tem em português…: (Leia o livro inteiro umas duas vezes no mínimo, e faça todos os exercícios dele)

SCJP para Java 5 Guia de Estudo (Exame 310-055)

E faça os simulados pras versões novas:

Whizlabs, MasterExam, etc..

Quando se sentir confiante, manda bala !!!

Abraço,

rafaelsantos1983

Estou estudando pelo livro de Kathy Sierra, ed em Pt-br.

Ao final de cada capítulo, faço o exercício dele, e de um simulado que abrange só as questões por capítulo dele, as vezes cai questões de outros assuntos, mas tento fazer.
Além de revisar, lendo o resumo dele, no final que é muito bom.

Estou pesando em comprar esse livro, Certificação Java 5 - Guia Preparatório Exame CX-310-055, por ele ter diversas questões em pt-br e pesquisando no fórum soube que ele tirou muitas questões do Whizlabs.

O MasterExam eu tenho, veio no livro(no site da editora tem o link para baixar).

Mas tanto ele quanto o Whizlabs, são simulados em inglês, você conhece algum que sejam em pt-br?

Criado 17 de janeiro de 2009
Ultima resposta 19 de jan. de 2009
Respostas 13
Participantes 3