Ceci est une question d’examen passé et je me demandais quels types de type primitif et de référence sont d’abord? Avec un tableau, je sais que le type de référence est celui où il est composé d'objets ou de variables, mais un type primitif est celui où vous créez le tableau avec seulement int ou des chaînes. (droite?)
Comment pensez-vous que vous répondriez à la question sur le test et obtiendriez un bon crédit? Sans vraiment parler directement d'un type primitif ARRAY ... Y a-t-il un moyen de le faire sans cela? Ou pensez-vous qu'il serait bon de simplement l'expliquer avec le tableau.
Voici les types primitifs en Java:
Tous les autres types sont des types de référence: ils référencent des objets.
Ceci est la première partie de la tutoriel Java sur les bases du langage .
Du livre OCA Java SE 7
Tout comme les hommes et les femmes sont fondamentalement différents (selon John Gray, auteur de Men Are from Mars, les femmes Are of Venus), les variables primitives et les variables de référence à un objet diffèrent les unes des autres de multiples façons. La différence fondamentale réside dans le fait que les variables primitives stockent les valeurs réelles, tandis que les variables de référence stockent les adresses des objets auxquels elles se rapportent. Supposons qu’une classe Person est déjà définie. Si vous créez une variable int a et une variable de référence d'objet personne, ils stockeront leurs valeurs en mémoire, comme illustré à la figure 2.13.
int a = 77;
Person person = new Person();
Types de données primitives:
Types de données référence/objet:
ce sont des types de données primitifs
enregistré en pile dans la mémoire qui est gérée en mémoire, d'autre part, type de données d'objet ou type de données de référence stocké en tête dans la mémoire gérée par le CPG
c'est la différence la plus importante
Comme beaucoup ont indiqué plus ou moins correctement ce que sont les types de référence et les types primitifs, on pourrait être intéressé par le fait que nous avons quelques types plus pertinents en Java. Voici la liste complète des types dans Java (autant que je sache (JDK 11))).
Décrit une valeur (et non un type).
11
Décrit un type concret dont les instances étendent Object (interface, classe, enum, tableau). De plus, TypeParameter est en fait un type de référence!
Integer
Remarque: La différence entre le type primitif et le type référence oblige à recourir à la boxe pour convertir les primitives dans les instances d'objet et inversement.
Remarque2: Un paramètre de type décrit un type ayant une limite facultative inférieure ou supérieure et pouvant être référencé par nom dans son contexte (contrairement au type de caractère générique). Un paramètre de type peut généralement être appliqué aux types et méthodes paramétrés (classes/interfaces). Le type de paramètre définit un identificateur de type.
Exprime un type inconnu (comme tout type dans TypeScript) pouvant avoir une limite inférieure ou supérieure en utilisant super ou extend.
? extends List<String>
? super ArrayList<String>
Le néant. Aucune valeur/instance possible.
void method();
La seule représentation est "nulle". Il est utilisé notamment lors des calculs d'interférence de type. Null est un cas spécial appartenant logiquement à n'importe quel type (peut être assigné à n'importe quelle variable de n'importe quel type) mais n'est en réalité considéré comme une instance d'aucun type (par exemple ((instance nulle de Object) == false).
null
Un type d'union est un type qui correspond à un ensemble de types alternatifs. Malheureusement, dans Java il n’existe que pour l’instruction multi catch.
catch(IllegalStateException | IOException e) {}
Un type compatible avec plusieurs types. Depuis in Java une classe a au plus une super classe (Object n'en a pas)), les types d'interférence permettent uniquement au premier type d'être une classe et tout autre type doit être un type d'interface.
void method(List<? extends List<?> & Comparable> comparableList) {}
Le type est inconnu. C'est le cas de certaines définitions Lambda (non placées entre crochets, paramètre unique).
list.forEach(element -> System.out.println(element.toString)); //element is of unknown type
Type inconnu introduit par une déclaration de variable identifiant le mot clé 'var'.
var variable = list.get(0);
Primitives vs références
D'abord: -
Les types primitifs sont les types de données de base: byte
, short
, int
, long
, float
, double
, boolean
, char
. Les variables primitives stockent des valeurs primitives. Les types de référence sont toute classe instanciable ainsi que les tableaux: String
, Scanner
, Random
, Die
, int[]
, String[]
, etc. Les variables de référence stockent les adresses aux emplacements en mémoire où les données sont stockées.
Seconde: -
Les types primitifs stockent des valeurs mais le magasin de type référence traite les objets dans l'espace de tas. N'oubliez pas que les variables de référence ne sont pas des pointeurs comme vous l'avez peut-être vu en C et C++, elles ne sont que des poignées d'objets, afin que vous puissiez y accéder et modifier quelque peu l'état de l'objet.
En savoir plus: http://javarevisited.blogspot.com/2015/09/difference-between-primitive-and-reference-variable-Java.html#ixzz3xVBhi2cr
La réponse courte est que les primitives sont des types de données, tandis que les références sont des pointeurs, qui ne conservent pas leurs valeurs mais pointent vers leurs valeurs et qui sont utilisés sur/avec des objets.
Primatives :
booléen
personnage
octet
court
entier
longue
float
double
Beaucoup de bonnes références qui expliquent ces concepts de base. http://www.javaforstudents.co.uk/Types