Olá estou estudando os fundamentos de java e me deparei com o sequinte exercício:
classFundamentos1{publicstaticvoidmain(Stringargs[]){signedintx=10;// int x = 10;for(inty=0;y<5;y++,x–)System.out.print(""+x);}
}
Neste exercício eu devo dizer qual será o resultado. Ok sei que: irá haver um Erro de compilação!. A palavra “[color=red]signed[/color]” não é uma palavra-chave de um modificador válido na linguagem Java. Todos os tipos primitivos de números são sinalizados. Sempre. Agora se o signed for retirado irá compilar e o resultado será:109876. Aqui está minha dúvida não consigo ler, enxergar como chegar neste resultado, alguém pode me explicar?
O programa roda de y = 0 até y = 4, 5 vezes e vai decrescendo o valor de x. :thumbup:
PadrE
Eae, RooseveltDorea
Cara… seja bem vindo ao mundo do java… ^^
E pela sua dúvida, aconselho que vc leia um pouco mais sobre as conversões implícitas no java, algo sobre classes Wrapper, assuntos de Boxing e AutoBoxing (novidade no Java 5)…
Nesse exemplo que vc postou… na linha
System.out.print("" + x);
esta ocorrendo uma concatenação entre String ("") e a variavel x, portanto, x (declarado com int) se tornará uma String tb…
Sacou ?
rmarin
PadrE:
Eae, RooseveltDorea
Cara… seja bem vindo ao mundo do java… ^^
E pela sua dúvida, aconselho que vc leia um pouco mais sobre as conversões implícitas no java, algo sobre classes Wrapper, assuntos de Boxing e AutoBoxing (novidade no Java 5)…
Nesse exemplo que vc postou… na linha
System.out.print("" + x);
esta ocorrendo uma concatenação entre String ("") e a variavel x, portanto, x (declarado com int) se tornará uma String tb…
Sacou ?
PadrE! Não tem nada a ver, mesmo que fosse um simples System.out.print(x); o resultado seria o mesmo.
RooseveltDorea
rmarin:
Eu também me me assustei.
È que ele dá um print e não println:
Logo imprime 10 depois 9, 8, 7 e 6.
O programa roda de y = 0 até y = 4, 5 vezes e vai decrescendo o valor de x. :thumbup:
Ok, entendi se eu usar o println o resultado será"
10
9
8
7
6
Foi falta de visão minha, obrigado pela ajuda.
RooseveltDorea
PadrE:
Eae, RooseveltDorea
Cara… seja bem vindo ao mundo do java… ^^
E pela sua dúvida, aconselho que vc leia um pouco mais sobre as conversões implícitas no java, algo sobre classes Wrapper, assuntos de Boxing e AutoBoxing (novidade no Java 5)…
Nesse exemplo que vc postou… na linha
System.out.print("" + x);
esta ocorrendo uma concatenação entre String ("") e a variavel x, portanto, x (declarado com int) se tornará uma String tb…
Sacou ?
Ok obrigado pela dica, mas não acho nada sobre classes Wrapper, assuntos de Boxing e AutoBoxing, mas vou continuar procurando, grande abraço e obrigado pela ajuda.
PadrE
rmarin:
PadrE:
Eae, RooseveltDorea
Cara… seja bem vindo ao mundo do java… ^^
E pela sua dúvida, aconselho que vc leia um pouco mais sobre as conversões implícitas no java, algo sobre classes Wrapper, assuntos de Boxing e AutoBoxing (novidade no Java 5)…
Nesse exemplo que vc postou… na linha
System.out.print("" + x);
esta ocorrendo uma concatenação entre String ("") e a variavel x, portanto, x (declarado com int) se tornará uma String tb…
Sacou ?
PadrE! Não tem nada a ver, mesmo que fosse um simples System.out.print(x); o resultado seria o mesmo.
Concordo, mas e se tivesse a seguinte situação?
System.out.print(""+x+y);
ou
System.out.print(""+(x+y));
ou
Integer x = new Integer(45); System.out.print(x);
???
Acho q vale a pena estudar um pouco sobre conversões… !!
sergiotaborda
Nem sempre.
Se vc está pensando que byte, short, int e long são os tipos numéricos e que char não é um tipo de numero então vc tem razão; os tipos primitivos numéricos são sempre sinalizados.
Só que char é tb um tipo numérico e portanto nem todos os tipos numéricos primitivos são sinalizados.
A prova de que char é um tipo numérico é que vc pode fazer
charx='a';y=x+1;y=='b'// verdadeiro
RooseveltDorea
sergiotaborda:
RooseveltDorea:
Neste exercício eu devo dizer qual será o resultado. Ok sei que: irá haver um Erro de compilação!. A palavra "[color=red]signed[/color]" não é uma palavra-chave de um modificador válido na linguagem Java. Todos os tipos primitivos de números são sinalizados. Sempre.
Nem sempre.
Se vc está pensando que byte, short, int e long são os tipos numéricos e que char não é um tipo de numero então vc tem razão; os tipos primitivos numéricos são sempre sinalizados.
Só que char é tb um tipo numérico e portanto nem todos os tipos numéricos primitivos são sinalizados.
A prova de que char é um tipo numérico é que vc pode fazer
char x = 'a';
y = x + 1;
y == 'b' // verdadeiro
Olá sergiotaborda,,
enviei seu comentário para o keynote em java que escreveu o exercíco, qdo receber a resposta envio para vc. Grato pela ajuda e pela informação.
Em tempo, vc pode explicar como criou os links view plan, copy to clipboard, print e ?, o fato é que achei muito 10. Obrigado e até mais.
sergiotaborda
RooseveltDorea:
Em tempo, vc pode explicar como criou os links view plan, copy to clipboard, print e ?, o fato é que achei muito 10. Obrigado e até mais.
Vc coloca o codigo que quer dentro dos simbolos e . Existem outros simbolos com o quote que vc vê ali…