Qual é a diferença entre tipos primitivos e de referência?

Esta é uma pergunta do exame passado e eu queria saber o que é um tipo primitivo e tipo de referência em primeiro lugar? Com um array, eu sei que o tipo de referência é onde o array é composto de objects ou variables, mas um tipo primitivo é onde você criaria o array com apenas int ou strings. (certo?)

Como você acha que responderia a pergunta no teste e receberia um bom crédito? Sem realmente se referir diretamente a um tipo ARRAY primitivo … Existe uma maneira de fazer isso sem isso? Ou você acha que seria bom apenas explicá-lo com o array.

Estes são os tipos primitivos em Java:

  • boleano
  • byte
  • curto
  • Caracteres
  • int
  • longo
  • flutuador
  • Duplo

Todos os outros tipos são tipos de referência: eles fazem referência a objects.

Esta é a primeira parte do tutorial Java sobre os fundamentos da linguagem .

Do livro OCA JAVA SE 7

Assim como homens e mulheres são fundamentalmente diferentes (de acordo com John Gray, autor de Homens são de Marte, Mulheres são de Vênus), variables ​​primitivas e variables ​​de referência de object diferem entre si de várias maneiras. A diferença básica é que as variables ​​primitivas armazenam os valores reais, enquanto as variables ​​de referência armazenam os endereços dos objects aos quais se referem. Vamos supor que uma class Person já esteja definida. Se você criar uma variável int a e uma pessoa de variável de referência de object, elas armazenarão seus valores na memory, conforme mostrado na figura 2.13.

 int a = 77; Person person = new Person(); 

insira a descrição da imagem aqui

Tipos de dados primitivos:

  • Predefinido pela linguagem e nomeado por uma palavra-chave
  • Total não = 8
    boleano
    Caracteres
    byte
    curto
    inteiro
    longo
    flutuador
    Duplo

Tipos de dados de referência / object:

  • Criado usando construtores definidos das classs
  • Usado para acessar objects
  • O valor padrão de qualquer variável de referência é nulo
  • A variável de referência pode ser usada para se referir a qualquer object do tipo declarado ou qualquer tipo compatível.

Em suma, no nível mais baixo, temos um grupo de tipos primitivos como “byte, short, int, long, float, double, booleano, char” e os tipos de referência são principalmente projetados para agrupar tipos primitivos. Então você pode ter group of int como list, group of char como string, class das primitivas etc.

Outro fator importante é o tipo primitivo que contém um endereço de retenção de valor e referência.

 int item = 3; int item2 = item; 

Fazendo item2 mantenha um valor 3 ainda. Mas para tipo de referência digamos

 Point p = new Point(1.0, 2.0); Point q = p; 

q estará mantendo endereço do object p e na VM ainda é um ponto. Da mesma forma, o endereço é passado para methods para o tipo de referência, enquanto o valor será passado para o tipo primitivo. A maioria das outras diferenças também está associada ao valor e ao endereço.

estes são tipos de dados primitivos

  • boleano
  • personagem
  • byte
  • curto
  • inteiro
  • longo
  • flutuador
  • Duplo

salvo na pilha na memory que é gerenciada memory no outro tipo de dados de object de mão ou tipo de dados de referência armazenados na cabeça na memory gerenciada pelo GC

esta é a diferença mais importante

A resposta curta é primitiva são tipos de dados, enquanto referências são pointers, que não mantêm seus valores, mas apontam para seus valores e são usados ​​em / com objects.

Primatives :

boleano

personagem

byte

curto

inteiro

longo

flutuador

Duplo

Muitas boas referências que explicam esses conceitos básicos. http://www.javaforstudents.co.uk/Types

Primitivos vs. Referências

Primeiro :-

Tipos primitivos são os tipos básicos de dados: byte , short , int , long , float , double , boolean , char . Variáveis ​​primitivas armazenam valores primitivos. Os tipos de referência são qualquer class instanciável, bem como matrizes: String , Scanner , Random , Die , int[] , String[] etc. As variables ​​de referência armazenam endereços para locais na memory onde os dados são armazenados.

Segundo:-

Tipos primitivos armazenam valores, mas o tipo de referência armazena manipuladores para objects no espaço de heap. Lembre-se, variables ​​de referência não são pointers como você pode ter visto em C e C ++, elas são apenas manipuladores de objects, para que você possa acessá-los e fazer algumas mudanças no estado do object.

Leia mais: http://javarevisited.blogspot.com/2015/09/difference-between-primitive-and-reference-variable-java.html#ixzz3xVBhi2cr

  1. Java tem oito tipos primitivos: int, double, float, long, short, byte, char e booleano. Isso significa que o programador não pode definir um novo tipo primitivo.
  2. O tipo de referência é definido pelo usuário, portanto, há um número ilimitado deles. 4 tipos de referência fundamentais de java são: Classes, Interfaces, Arrays, Enums.
  3. Tipos primitivos representam valores únicos. Tipos de referência agregam tipos que contêm zero ou mais valores ou objects primitivos.
  4. Tipos primitivos requerem entre um e oito bytes de memory. Quando um valor primitivo é armazenado em uma variável ou passado para um método, o computador faz uma cópia dos bytes e armazena os valores. Objetos, por outro lado, podem exigir mais memory.