Depende do idioma.
Por exemplo, em linguagens como C e C ++, você tem uma série de built-in tipos escalares - int
, float
, double
, char
, etc. Estes são "primitivos", no sentido de que não podem ser decompostos em componentes mais simples. A partir desses tipos básicos, você pode definir novos tipos - tipos de ponteiro, tipos de matriz, tipos de estrutura, tipos de união, etc.
Então você tem uma linguagem como o Lisp da velha escola, onde tudo é um átomo ou uma lista . Novamente, pela definição acima, um átomo é "primitivo" no sentido de que não pode ser decomposto em algo mais simples.
Editar
Para mim, os termos "primitivo", "básico" e "interno" são praticamente intercambiáveis. Se você quiser ser realmente pedante, poderá distinguir entre os tipos "internos" (aqueles explicitamente fornecidos pela definição de linguagem) e os tipos derivados dos tipos internos ainda "primitivos" ou "básicos". na medida em que não podem ser decompostos em elementos mais simples. C'stypedef
Esse recurso permite criar novos nomes de tipos para os tipos existentes. O Ada permite criar novos tipos escalares que têm restrições. Por exemplo, você pode derivar um tipo Latitude do tipo flutuante interno, com a restrição de que ele não pode assumir valores fora do intervalo [-90,0, 90,0]. Ainda é um tipo primitivo ou básico, pois não pode ser dividido em nenhum componente mais simples, mas, como é definido pelo usuário, não é considerado um tipo "interno".
Novamente, esses conceitos são um pouco confusos e realmente dependem do contexto. Por exemplo, a noção de um tipo "interno" não tem sentido para um idioma sem tipo como o BLISS.
char
um tipo primitivo eString
um tipo composto.Da perspectiva do Java :
Em Java, há uma distinção muito clara entre tipos primitivos e não primitivos.
Uma variável de um tipo primitivo contém diretamente o valor desse tipo (em outras palavras, eles são tipos de valor ).
Uma variável de um tipo não primitivo não contém o valor diretamente; em vez disso, é uma referência (semelhante a um ponteiro) a um objeto. (Não é possível em Java criar tipos de valores definidos pelo usuário).
Java tem oito tipos primitivos:
byte
,short
,int
,long
,char
,boolean
,float
edouble
. Qualquer outra coisa é do tipo não primitivo.fonte
String
faz tem estatuto especial na língua (ele fica literais, é a assinatura demain
, não está internando que eu presumo é explicitamente permitido pelas JLS, está disponível automagicamente, etc.), mas não é um primitivo tipo de dados. Pode-se chamá-lo de embutido .Um primitivo é um tipo de dados básico que não é criado a partir de outros tipos de dados. Ele pode representar apenas um valor único. Todos os primitivos são tipos de dados internos por necessidade (o compilador precisa saber sobre eles), mas nem todos os tipos de dados internos são primitivos.
Em algumas linguagens, o compilador possui conhecimento interno de certos tipos criados a partir de outras coisas, porque precisa ser capaz de tratá-los de uma maneira especial. Os exemplos seriam a Variante no Delphi e Visual Basic (e o equivalente da Boo, "Duck") e a classe de objeto base na maioria das linguagens OO.
fonte
Como a Especificação de Linguagem Java especifica muito claramente o que a palavra "primitivo" significa no contexto de Java, e o Java
String
não está em conformidade com essa especificação, enquanto a Especificação de Linguagem SNOBOL4 define o que "primitivo" significa no contexto das cadeias de caracteres SNOBOL4 e SNOBOL4 está em conformidade com essa especificação.Não há realmente mais nada a ver. A especificação do respectivo idioma define o que certas palavras significam e algo se encaixa nessa descrição ou não. Por exemplo, a Especificação da linguagem C define o significado da palavra "função" como algo que claramente não é o que a palavra "função" normalmente significa, mas é assim que a palavra é usada na comunidade C.
fonte
Um tipo de dados 'primitivo' significa que você tem um valor armazenado na memória - esse valor não possui métodos ou estrutura interna. Uma primitiva só pode ser operada por operações externas.
Em Java, primitivas são números (int, long, etc.) e char. http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Se o seu valor tem estrutura (estou pensando em struts aqui), então não é um primitivo. Se possui métodos (um objeto ou classe), não é um primitivo.
fonte
int
tipo de dados faz tem métodos ...var myString = 3.ToString();
(consulte Int32.ToString () ). Observe queint
em C # é sinônimo deInt32
, ou seja,Int32
é um tipo primitivo (diferente de Java, ondeInteger
é diferenteint
). Assim,3.ToString()
em C # não envolve boxe!Encontrei algumas informações e achei que isso ajudaria as outras respostas. Então, quero compartilhá-lo -
A Wikipedia diz -
Na ciência da computação, o tipo de dados primitivo é um dos seguintes:
Um tipo básico é um tipo de dados fornecido por uma linguagem de programação como um componente básico. A maioria dos idiomas permite que tipos compostos mais complicados sejam construídos recursivamente a partir de tipos básicos.
Um tipo interno é um tipo de dados para o qual a linguagem de programação fornece suporte interno.
Na maioria das linguagens de programação, todos os tipos de dados básicos são incorporados. Além disso, muitas linguagens também fornecem um conjunto de tipos de dados compostos (tipo "string" em Java).
Eu gostaria de dizer dessa maneira -
Um tipo de dados básico é um tipo de dados que não pode ser mais dividido (o tipo "string" pode ser criado a partir de "char", mas o char não pode ser 'dividido' em qualquer tipo de dados (na maioria das vezes em Programação idiomas). Portanto, é um tipo de dados básico)
O tipo de string, no SNOBOL4, é considerado primitivo. Embora eu não saiba exatamente o motivo. É básico e embutido no SNOBOL4.
A especificação Java menciona claramente a lista de tipos de dados que considera ser do tipo primitivo. Como o tipo de sequência não está em suas especificações , não é um tipo de dados primitivo em Java, apesar de ser um tipo interno.
fonte
Primitivas são tipos de dados fundamentais fornecidos pelo próprio idioma. Exemplos na linguagem C são tipos de dados int, float, char. É fornecido como parte fundamental da linguagem.
Não primitivos são variáveis ou objetos definidos pelo usuário. Por exemplo, você pode definir um objeto que armazena dados ou pode usar struct em C para definir suas próprias variáveis. Estes não são primitivos porque você tinha que defini-los primeiro para usá-los.
Edite com mais explicações e abordando o comentário que eu considero primitivo como variáveis que vieram originalmente com a linguagem e não variáveis como String em C ++, que você deve declarar usando a palavra-chave New. Isso o torna um objeto para que uma String não seja uma primitiva.
Responda ao seu comentário: Provavelmente tem a ver com a implementação da variável. Se fazia parte do núcleo da linguagem, é primitivo. Se não, não é. Exemplo é String em C ++. Esta não é uma variável principal e é declarada usando Nova palavra-chave. Portanto, não é primitivo.
fonte
string
tipo de dados como tal; strings são representadas como agregados do tipo primitivochar
. O C ++ introduziu umstring
tipo de dados adequado , mas se é ou não um tipo "primitivo" depende de quem você pergunta. Pessoalmente, eu não o classificaria como tal. No entanto, eu classificaria um tipo de string BASIC da velha escola como um tipo primitivo, por razões que provavelmente são completamente arbitrárias.Para entender melhor o conceito de tipos primitivos e tipos de dados definidos pelo usuário, tudo o que falta às outras respostas é o conceito
compiler
.Se você entender o conceito de lexemes sendo selecionados como tokens , saberá que as primitivas são os únicos tipos de dados que um compilador conhece por si só.
fonte