Note
Il existe deux principaux types de Java. ** Type primitif ** et ** Type de référence **. J'ai essayé de résumer chacun.
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;
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é.
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