A propos des types primitifs et des types de référence Java

Préface

C'est un article que j'ai résumé sur les primitives et les classes wrapper, et le contenu qui les entoure. J'apprends actuellement à me qualifier pour Java Silver, et j'écris que je comprends à ce niveau, donc cela peut manquer de rigueur ou de précision. Veuillez comprendre (si vous faites une erreur, faites-le moi savoir).

Public cible

・ Les personnes qui envisagent d'obtenir une qualification Java ・ Les gens qui ne comprennent pas ce qu'ils disent, comme les primitifs, les classes de rappeurs et la boxe automatique.

mot-clé

Type primitif, type de référence, classe wrapper, boxing automatique, unboxing

Qu'est-ce qu'un (type) primitif?

** [Définition approximative] ** ・ Un des types de données Java -Le type de base de Java, également appelé type valeur -Il y a une valeur dans la zone de pile de mémoire

[type] Il existe 8 types en tout. Je pense que vous n'avez pas à vous souvenir de la plage de valeurs qui peut être exprimée (~~, j'ai donc arrêté d'écrire au milieu ~~). Je pense qu'il est normal de se souvenir du nombre de bits, plus le nombre de bits est grand, plus la plage pouvant être exprimée est large [^ 10].

Type de données Valeurs et plages pouvant être exprimées bit(bit) Exemple concret
boolean true, false 1
byte -128 ~127 entiers 8
char \u0000 ~ \Chaîne Unicode uFFFF 16
short -32768 ~32767 entier 16
int entier 32
float Nombre réel(Nombre à virgule flottante simple précision) 32 2f, 100F
long entier 64 10l, 5L
double Nombre réel(Nombre à virgule flottante double précision) 64

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

** [Définition approximative] ** ・ Un des types de données Java ・ Chaîne, tableau, liste, etc. -La zone peep de la mémoire contient la valeur de référence de la variable et la zone de pile contient la valeur indiquée par la valeur de référence.

Pour écrire la dernière définition plus en détail, l'objet nouvellement créé (≒ instance) est affecté à la zone de pile, et le pointeur (adresse en mémoire) vers cet objet est affecté à la zone de peep comme valeur de référence ( Référence 4> [Type primitif et type de référence](https://qiita.com/hysdsk/items/2e94c8722dc8f950e77c# Type primitif et type de référence).

[Reference 2] et [ref2] sont très détaillés sur la différence de comportement lors de l'assignation entre le type primitif et le type de référence, veuillez donc vous y référer. (Cette fois, le sujet principal n'est pas là, je vais donc passer à autre chose)

Qu'est-ce qu'une classe wrapper?

** [Définition approximative] ** ・ Classe évolutive de types primitifs classés comme type de référence ← Ça a l'air fort -Chaque classe a une méthode pratique ・ Il se comporte comme un type primitif, mais le contenu peut être nul (donc faites attention à nullpo)

C'est probablement une classe wrapper car elle enveloppe (enveloppe) le type primitif! Le contenu est de type primitif. Faisons un tableau qui correspond au type primitif (sauf pour certains, il a la même forme que le type primitif!).

Type primitif Classe de wrapper
boolean Boolean
byte Byte
char Character
short Short
int Integer
float Float
long Long
double Double

Je l'ai écrit comme une méthode pratique, mais par exemple, dans le cas de ʻInteger, convertissez la chaîne de caractères en type int avec ʻInteger.parseInt (String) , convertissez le type int en chaîne de caractères avec ʻInteger.valueOf (int)`, etc. , Divers sont disponibles (ce dernier est également utilisé lors de la conversion explicite en type Integer, voir le chapitre suivant pour plus de détails).

Qu'est-ce que la boxe et le déballage automatiques?

Sur la base de l'explication jusqu'à présent, si vous écrivez la définition

Autoboxing: conversion automatique du type primitif à la classe wrapper Déballage: conversion automatique de la classe wrapper au type primitif [^ 15]

est! Je ne pense pas que ça ait quoi que ce soit à voir avec la boxe sportive, je ne sais pas [^ 20]! Je pense que c'est une boîte automatique parce qu'elle enveloppe automatiquement le type primitif (= le met dans la boîte), et inversement c'est unboxing parce qu'il est sorti de la boîte.

Le code réel ressemble à ceci (cité de la référence 7).

//Boxe automatique
int numInt = 10;
Integer numInteger = numInt;

//Déballage
Integer numInteger = new Integer(10);
int numInt =  numInteger;

L'illustration de la boxe automatique et du déballage ressemble à ceci.

Boxe automatique
            ==>  
  [Type primitif]        [Classe de wrapper]  
            <==
Déballage

Oh, au fait, le fait que j'ai écrit "conversion automatique" ci-dessus signifie que vous pouvez également effectuer explicitement la mise en boîte automatique et le déballage (cité dans la référence 7).

//Boxe automatique
int numInt = 10;
Integer numInteger = new Integer(numInt);
//Ou ci-dessous
Integer numInteger = Integer.valueOf(numInt);

//Déballage
Integer numInteger = new Integer(10);
int numInt =  numInteger.intValue();

En cours d'écriture

Je peux ou non écrire quelque chose, c'est indécis.

À la fin

Merci d'avoir lu jusqu'au bout!

prime

** Informations de test (à partir de la référence 1) ** Objet: Programmeur Java SE 8 I Numéro de test: 1Z0-808 [^ 30] Durée du test: 150 minutes Nombre de questions: 77 questions Ligne de passage: 65%

référence

En écrivant cet article, j'ai fait référence aux livres et sites suivants. Je profite de cette occasion pour vous remercier. Toutes les références sont beaucoup plus faciles à comprendre que mes explications, je recommande donc de les lire!

  1. Sumito Shiga (2019) «Capture approfondie de la correspondance Java SE 8 Silver problem collection [1Z0-808]» publiée par Impress Co., Ltd.
  2. [[Java] Expliquez la différence entre le type valeur (primitif) et le type de référence (objet) avec le code et la figure << Lecture Day 1 >>] [ref2]
  3. [Type primitif [Type de variable]] [ref3](dictionnaire de terminologie informatique qui vous donne l'impression de "Je comprends" même si vous "Je ne comprends pas")
  4. [Référence Java comprise dans la figure] [ref4]
  5. [[Introduction à Java] Une explication facile à comprendre des bases des classes Integer et wrapper! ] [ref5]
  6. [Type de classe de wrapper] [ref6]
  7. [[Java] Auto Boxing, Unboxing] [ref7]

[]: Liste d'URL [ref2]: https://freelance-jak.com/technology/java/1175/ [ref3]: https://wa3.i-3-i.info/word15876.html [ref4]: https://qiita.com/hysdsk/items/2e94c8722dc8f950e77c [ref5]: https://www.sejuku.net/blog/22828 [ref6]: https://www.javadrive.jp/start/wrapper_class/index1.html [ref7]: https://qiita.com/chihiro/items/870eca6e911fa5cd8e58

Recommended Posts

A propos des types primitifs et des types de référence Java
À propos des types de données Java (en particulier des types primitifs) et des littéraux
Types de données de base et types de référence (Java)
Types primitifs Java, types de référence, immuable, mutable
A propos du type de données de base Java et de la mémoire du type de référence
Types de données de base et types de référence Java
[Java] Types de variables et types
À propos des types de chargeur de classe Java
J'ai étudié les types primitifs Java
[Java] À propos de String et StringBuilder
À propos du package Java et de l'importation
Comparaison équivalente de la classe wrapper Java et du type primitif
À propos des méthodes Java statiques et non statiques
Déclaration, initialisation et types de variables Java
[Java] Types de base et notes d'instructions
Série Java Primer (variations et types)
[Java débutant] À propos de l'abstraction et de l'interface
Mécanisme de référence Java (pile et tas)
Les variables de tableau Java sont des types de référence
Java passe par valeur et passe par référence
Différence entre le type primitif et le type de référence
Ceci et cela à propos de Base64 (Java)
[Java] Types d'exception et traitement de base
[À propos de JDBC qui connecte Java et SQL]
[Introduction à Java] À propos des déclarations et des types de variables
Logique du numéro de page et code de référence (java)
À propos de l'interface Java
[Java] À propos des fonctionnalités de Java 12
[Java] À propos des tableaux
Référence de la méthode Java8
Quelque chose à propos de java
Où est Java
À propos des fonctionnalités Java
À propos des threads Java
Java et JavaScript
À propos des tableaux Java
XXE et Java
À propos de l'interface, interface java
référence de la méthode java8
Matériaux de référence JAVA
Ma référence Java
À propos de Java Var
À propos de Java Literal
À propos des commandes Java
À propos de la sortie du journal Java
À propos de l'interface fonctionnelle Java
Java, à propos d'un tableau à deux dimensions
À propos de la division de classe (Java)
À propos de [Java] [StreamAPI] allMatch ()
Getter et Setter (Java)
À propos de la classe Java StringBuilder
[Java] Types de commentaires et comment les rédiger
[Java] Thread et exécutable
Java vrai et faux
[Java] À propos de la classe Singleton
À propos de Bean et DI
À propos des classes et des instances
[Java] Comparaison des chaînes de caractères et && et ||
À propos de la liaison de méthode Java