Fundamentos I - Java

9 respostas
RooseveltDorea

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.

9 Respostas

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:

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

char x = '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…

Criado 20 de setembro de 2007
Ultima resposta 21 de set. de 2007
Respostas 9
Participantes 4