Tipos primitivos em Java

Java é uma linguagem orientada a objetos, mas não totalmente, pois nem tudo é objeto. Temos os chamados Tipos Primitivos!

Tipos primitivos

نظرات

  • 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 “0ایکس” 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 بیت (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), سابق: 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), سابق: 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.
ب) boolean, string, int, float, double.
(ج)) boolean, string, short, int, long, float, double.
(د)) boolean, char, int, long, float.
E) boolean, string, byte, int, long, float.

پاسخ 1

Fica claro que todas as alternativas que dizem questringé um tipo primitivo estão erradas. A letra d) está incompleta, بنابر این, 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) (ایکس + 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, بترتیب, مانند:
a) short e int
ب) int e short
(ج)) int e char
(د)) String e int
E) int e String

پاسخ 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) (ایکس + 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) (ایکس + y), temos que x = (short) (ایکس + 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.

ب) 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 (ایکس) 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. مثلا, 97 corresponde ao caractere ‘ada tabela ASCII.

(د)) 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 (ایکس), 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 (ایکس) quando executar a declaração x = x + y.

تعداد دسترسی ها: 7221

2 بررسی “Tipos primitivos em Java

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند با *