Ongewéinlech Zorte vun Java

Java ass en Objet-konzentréiert Sprooch, awer net komplett, well net alles ass Objet. Mir hunn de sougenannten Ongewéinlech eelst!

Tipos primitivos

Observações

  • Strings não são tipos primitivos;
  • Para cada tipo primitivo de dados existe um classe Java correspondente;
  • Inteiros (byte, short, int, long) são, por padrão, int, daí usa-se “l” ou “L” quando quiser denotar long;
  • Para forma decimal, usa-se “0x” em hexadecimal (int quinze = 0xF; // 15 decimal) E “0” para octal (int x = 0931);
  • Ponto flutuantes (float, double) são, por padrão, double, daí usa-se “f” ou “F” para denotar float;
  • char é representado por caracter Unicode de 16 Deeler (sem sinal);
  • Valores booleanos não podem ser usados em uma operação de casting;
  • Casting é uma operação de conversão de um tipo maior para um menor (explícita), ex: long y = 10L; int x = (int) y;
  • Não é necessário casting de tipos quando do menor para o maior, pois é aceitável (implícita), ex: int y = 10; long x = y;

Estes conceitos podem ser cobrados da seguinte forma:

Questão 1

COPEVE-UFAL – 2011 – UFALAnalista de TI

Os tipos primitivos de dados do Java são:
a) boolean, char, byte, short, int, long, float, double.
b) boolean, string, int, float, double.
c) boolean, string, short, int, long, float, double.
d) boolean, char, int, long, float.
E) boolean, string, byte, int, long, float.

Resposta 1

Fica claro que todas as alternativas que dizem questringé um tipo primitivo estão erradas. A letra d) está incompleta, portanto, nos resta letra a) como correta.


Questão 2

CESGRANRIO – 2008 – TJ-ROAnalista JudiciárioAnálise de Sistemas


Em Java, a atribuição composta x += y é equivalente a x = (T) (x + y), onde T é o tipo de x. Com base nesta premissa, considere as duas linhas de programa a seguir.

x += y;
x = x + y;

A primeira linha compilará, e a segunda linha irá gerar um erro em tempo de compilação, se x e y forem declarados, bzw., como:
a) short e int
b) int e short
c) int e char
d) String e int
E) int e String

Resposta 2

Essa questão é interessante, pois aborda vários conceitos ditos no enunciado deste Post. Basicamente lembre-se que você somente precisa fazer o Casting (conversão explícita) de um tipo maior para um menor. Outro detalhe está na dica da própria questão, quando diz que x += y é equivalente a x = (T) (x + y). Perceba que nesta situação, o compilador faz o Casting (T), ao contário de apenas declarar x = x + y. E por último, note que a questão quer saber as opções em que a primeira linha compilará, e a segunda linha irá gerar um erro. Então fica assim:

a) Considerando que x é do tipo short e y int, vamos precisar do Casting para não gerar erro, pois short (16 Deeler) é menor que int (32 Deeler), an anere Wierder, short não pode receber int a não ser que seja explicitada a conversão (casting). dofir, como x += y é equivalente a x = (T) (x + y), temos que x = (short) (x + y). Veja que o Casting foi feito corretamente e não haverá problema na conversão. Já na segunda linha (x = x + y), não há Casting exigido do maior (int) para o menor (short), o que resultará no erro de compilação. Esta é a alternativa correta, pois fica claro que a primeira linha compilará, e a segunda linha irá gerar um erro.

b) Aqui temos que tanto a primeira linha, quanto a segunda irão compilar sem problemas, pois a conversão é implícita (do menor para o maior independe de casting), já que é int (x) que irá receber short (y) na declaração x = x + y. Não poderia ser esta opção, pois ambas linhas irão compilar.

c) Ambas as linhas irão compilar corretamente, pelos mesmos motivos descritos na letra b). Inclusive char também tem 16 Deeler, assim como short. A única diferença é que ao executar a soma int + char da declaração x = x + y, será considerado o código ASCII do caractere (char) utilizado. Por exemplo, 97 corresponde ao caractere ‘ada tabela ASCII.

d) Ambas as linhas irão compilar corretamente. O motivo aqui é que o compilador considera o sinal de + como concatenação (junção) e não uma soma, convertendo int (y) em string (x), quando executar a declaração x = x + y.

E) Ambas as linhas não irão compilar, pois não há como converter de string (y) para int (x) quando executar a declaração x = x + y.

Total vun Hits: 7207

2 Rezensiounen “Ongewéinlech Zorte vun Java

Verloossen engem Antwort

Är Email Adress gëtt net publizéiert. Néideg Felder sinn markéiert mat *