Fundamentos I - Java

Olá estou estudando os fundamentos de java e me deparei com o sequinte exercício:

class Fundamentos1
{
public static void main(String args[])
{
signed int x = 10;
// int x = 10;
for (int y = 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?

Grato a todos.

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:

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 ?

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

PadrE! Não tem nada a ver, mesmo que fosse um simples System.out.print(x); o resultado seria o mesmo.

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

Ok, entendi se eu usar o println o resultado será"
10
9
8
7
6

Foi falta de visão minha, obrigado pela ajuda.

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

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.

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

PadrE! Não tem nada a ver, mesmo que fosse um simples System.out.print(x); o resultado seria o mesmo.[/quote]

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… !!

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

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

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

[code]
char x = ‘a’;

y = x + 1;

y == ‘b’ // verdadeiro
[/code][/quote]

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.

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

Vc coloca o codigo que quer dentro dos simbolos e . Existem outros simbolos com o quote que vc vê ali…