Прымітыўныя тыпы ў Java

Java з'яўляецца аб'ектна-арыентаваным мовай, але не ў поўнай меры, таму што не ўсе з'яўляецца аб'ектам. У нас ёсць так званыя прымітыўныя тыпы!

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 “0xem hexadecimal (int quinze = 0xF; // 15 decimal) е “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 біты (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.
з) boolean, string, short, int, long, float, double.
d) boolean, char, int, long, float.
е) 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, respectivamente, como:
a) short e int
b) int e short
з) int e char
d) String e int
е) 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 біты) é menor que int (32 біты), іншымі словамі, short não pode receber int a não ser que seja explicitada a conversão (casting). такім чынам, 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.

з) Ambas as linhas irão compilar corretamente, pelos mesmos motivos descritos na letra b). Inclusive char também tem 16 біты, 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.

е) 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.

Усяго доступы: 7221

2 водгукі “Прымітыўныя тыпы ў Java

пакінуць каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаныя *