[JAVA] Différence entre le type primitif et le type de référence

Note

Type primitif (type de données de base) et type de référence

Il existe deux principaux types de Java. ** Type primitif ** et ** Type de référence **. J'ai essayé de résumer chacun.

Qu'est-ce qu'un type primitif?

Les huit suivants sont des types primitifs.

Moule Classification Nombre de bits
boolean Valeur booléenne 1
byte entier 8
short entier 16
char lettre 16
int entier 32
float Fraction 32
long entier 64
double Fraction 64

Lors de la déclaration d'une variable de type primitif, la valeur peut être stockée dans la variable en même temps que la déclaration. La valeur 1 est stockée telle quelle dans la variable suivante a.

int a = 1;

Qu'est-ce qu'un type de référence?

Les types de référence sont des types autres que les huit ci-dessus. Par exemple, les chaînes et les tableaux sont des types de référence.

Hoge hoge = new Hoge();
String str = "fuga";

Dans le type référence, la valeur n'est pas stockée dans la variable telle quelle, mais l'emplacement de la mémoire où la valeur est stockée est stocké.

Différence entre le type de base et le type de référence vu par la réaffectation

Il existe une différence de comportement de réaffectation entre le type de base et le type de référence.

L'exemple de code ci-dessous est le code qui réaffecte le type de base. Vous pouvez le voir intuitivement.

kihon.java


int a = 1;
int b = a; //La valeur de a: 1 est stockée dans b
a = 2;

Systemout.println(a); //2 est la sortie
Systemout.println(b); //1 est la sortie

Par contre, dans le type référence, c'est comme suit. De la même manière que le type de base, b [0] semble sortir 1. Cependant, avec les types référence, les variables stockent uniquement l'emplacement de la mémoire où les données sont stockées.

Lorsque le tableau a est déclaré, les informations de localisation de la mémoire où sont stockées les informations du tableau «{1, 2, 3}» sont stockées dans a. Lorsque le tableau b est déclaré, b stocke également l'emplacement mémoire du tableau {1, 2, 3} de a.

À ce stade, a et b sont des variables qui contiennent les mêmes informations d'emplacement mémoire.

ʻA [0] = 0; remplace la valeur 0 du tableau {1, 2, 3} `dans l'emplacement mémoire stocké dans a par 0. Le tableau stocké en mémoire est maintenant «{0, 2, 3}».

Par conséquent, même si vous regardez la 0ème place dans le tableau à partir de l'emplacement de la mémoire stockée dans b, la valeur de sortie sera 0.

sansyo.java


int[] a = {1, 2, 3};
int[] b = a;
a[0] = 0;

Systemout.println(a[0]); //0 est la sortie
Systemout.println(b[0]); //0 est la sortie

Recommended Posts

Différence entre le type primitif et le type de référence
[Java] Différence entre l’affectation d’une variable de type de base et l’affectation d’une variable de type de référence
Différence entre vh et%
Différence entre i ++ et ++ i
Upcast, downcast et constructeur
Type de données de base et type de référence
Différence entre le type primitif et le type de référence
Différence entre produit et variante
Type de données de base et type de référence
Différence entre redirect_to et render
[Java] Différence entre == et égal
Différence entre redirect_to et render
Différence entre CUI et GUI
Différence entre les variables et les variables d'instance
Différence entre classe et instance
Différence entre l'installation de bundle et de bundle
Différence entre ArrayList et LinkedList
Différence entre render et redirect_to
Différence entre List et ArrayList
Différence entre .bashrc et .bash_profile
Différence entre StringBuilder et StringBuffer
Différence entre render et redirect_to
[Java] Différence entre equals et == dans une chaîne de caractères qui est un type de référence
[Ruby] Différence entre obtenir et publier
Différence entre interface et classe abstraite
Différence entre l'opérateur == et la méthode égale
[Java] Différence entre Hashmap et HashTable
[Terminal] Différence entre irb et pry
JavaServlet: différence entre executeQuery et executeUpdate
[Ruby] Différence entre is_a? Et instance_of?
[Rails] Différence entre find et find_by
[JAVA] Différence entre abstrait et interface
Différence entre Thymeleaf @RestController et @Controller
Différence entre Stream map et flatMap
[Java] Différence entre array et ArrayList
A propos des types primitifs et des types de référence Java
Différence entre string.getByte () et Hex.decodeHex (string.toCharaArray ())
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
[rails] Différence entre redirect_to et render
[Android] Différence entre finish () et return;
Remarque: Différence entre Ruby "p" et "met"
Différence entre final et immuable en Java
[Remarque] Différence entre l'installation et la mise à jour du bundle
Différence entre la variable d'instance Ruby et la variable locale
Différence entre pop () et peek () dans la pile
[Pour les débutants] Différence entre Java et Kotlin
Différence entre isEmpty et isBlank de StringUtils
Différence entre getText () et getAttribute () de Selenium
À propos de la différence entre irb et pry
Différence entre "|| =" et "instance_variable_defined?" Dans Ruby memo
Différence entre EMPTY_ELEMENTDATA et DEFAULTCAPACITY_EMPTY_ELEMENTDATA dans ArrayList
[Ruby] Différence entre print, put et p
[Java] Différence entre la plage Intstream et la plageClosed
Différence entre int et Integer en Java
[Rails] Différence entre redirect_to et render [Débutant]
[iOS] Comprendre la différence entre le cadre et les limites