Quelques concepts de base entre objets et références
Quelques concepts de base entre objets et références.
Lorsque j'ai appris Java pour la première fois, pendant longtemps, j'ai toujours eu l'impression que les concepts de base étaient très vagues. Plus tard, j'ai appris que dans de nombreux livres Java, les objets et les références d'objets sont confondus. Cependant, si je n'arrive pas à faire la distinction entre les objets et les références d'objets,
alors je ne parviens vraiment pas à bien comprendre la technologie orientée objet suivante. Écrire certaines de vos propres connaissances peut aider vos amis qui découvrent Java à éviter de faire des détours.
Pour faciliter l'explication, nous définissons d'abord une classe simple :
classe Véhicule {
int passagers
int fuelcap;
int mpg;
}
Avec ce modèle, vous pouvez l'utiliser pour créer des objets :
Vehicle veh1 = new Vehicle();
Le L'action de cette instruction est généralement appelée création d'un objet. En fait, elle contient quatre actions.
1) Le "nouveau véhicule" à droite utilise la classe Vehicle comme modèle pour créer un objet de classe Vehicle (également appelé objet Vehicle) dans l'espace du tas.
2) Le () à la fin signifie qu'après la création de l'objet, le constructeur de la classe Vehicle est appelé immédiatement pour initialiser l'objet nouvellement généré. Il y a certainement un constructeur. Si vous ne l'écrivez pas, Java ajoutera un constructeur par défaut pour vous.
3) "Véhicule veh 1" à gauche crée une variable de référence de classe de véhicule. La référence de classe Vehicle est une référence d'objet qui peut être utilisée pour pointer vers l'objet Vehicle à l'avenir.
4) L'opérateur "=" fait pointer la référence de l'objet vers l'objet Véhicule qui vient d'être créé.
Nous pouvons diviser cette déclaration en deux parties :
Vehicle veh1;
veh1 = new Vehicle();
L'effet est le même. Écrit de cette façon, c'est plus clair. Il y a deux entités : l'une est la variable de référence de l'objet et l'autre est l'objet lui-même.
Les entités créées dans l'espace du tas sont différentes des entités créées dans le segment de données et l'espace de la pile. Bien qu’il s’agisse d’entités réelles, nous ne pouvons ni les voir ni les toucher. De plus,
Étudions attentivement la deuxième phrase et découvrons quel est le nom de l'objet que nous venons de créer ? Certaines personnes disent que cela s'appelle « Véhicule ». Non, "Véhicule" est le nom de la classe (le modèle de création de l'objet).
Une classe Véhicule peut créer d'innombrables objets, et ces objets ne peuvent pas tous être appelés "Véhicule".
L'objet n'a même pas de nom, il n'est donc pas accessible directement. Nous ne pouvons accéder aux objets qu'indirectement via des références d'objet.
Afin d'illustrer de manière vivante les objets, les références et la relation entre eux, vous pouvez créer une métaphore qui n'est peut-être pas très appropriée. L’objet est comme un très gros ballon, trop gros pour que nous puissions l’attraper. La variable de référence est une corde qui peut être utilisée pour attacher le ballon.
Si seule la première instruction est exécutée et que la deuxième instruction n'est pas exécutée, la variable de référence veh1 créée à ce moment ne pointe vers aucun objet et sa valeur est nulle. Une variable de référence peut pointer vers un objet ou être nulle.
C'est une corde, une corde qui n'a encore été attachée à aucun ballon. Après avoir exécuté la deuxième phrase, un nouveau ballon est fabriqué et attaché à la corde veh1. Quand on attrape la corde, on attrape le ballon.
Encore une phrase :
Véhicule veh2;
J'ai fabriqué une autre corde, mais je n'ai pas encore attaché le ballon. Si vous ajoutez une autre phrase :
veh2 = veh1;
est à égalité. Ici, un comportement de copie se produit. Cependant, il convient de noter que l'objet lui-même n'est pas copié, seule la référence de l'objet est copiée. En conséquence, veh2 pointe également vers l'objet pointé par veh1. Les deux cordes sont attachées au même ballon.
Si vous utilisez la phrase suivante pour créer un autre objet :
veh2 = new Vehicle();
, la variable de référence veh2 changera pour pointer vers le deuxième objet.
De la description ci-dessus, nous pouvons tirer les conclusions suivantes :
(1) Une référence d'objet peut pointer vers 0 ou 1 objet (une corde n'a pas besoin d'être attachée à un ballon, ou Peut attacher un ballon)
(2) Un objet peut avoir N références pointant vers lui (il peut y avoir N cordes pour attacher un ballon).
Si la déclaration suivante revient :
veh1 = veh2;
Selon l'inférence ci-dessus, veh1 pointe également vers le deuxième objet. Ce n'est pas un problème. La question est : où est le premier objet ? Il n’y avait pas de corde pour le retenir et il s’est envolé. La plupart des livres disent qu'il est recyclé par le mécanisme de récupération de place de Java.
Ce n’est pas exact. À vrai dire, il est devenu l’objet d’un ramassage des ordures. Quant à savoir quand ils seront effectivement recyclés, cela dépend de l’humeur du mécanisme de collecte des déchets.
De ce point de vue, la déclaration suivante devrait être illégale, non ? Au moins, ça ne sert à rien, non ?
nouveau véhicule();
Faux. C'est légal et disponible. Par exemple, si nous créons un objet uniquement pour l'impression, nous n'avons pas besoin de le lier à une variable de référence. La plus courante consiste à imprimer une chaîne :
System.out.println("Je suis Java!");
L'objet chaîne "Je suis Java!" est supprimé après l'impression. Certains appellent ce genre d’objet un objet temporaire.
La relation entre l'objet et la référence continuera jusqu'à ce que l'objet soit recyclé
Java ne gère que les références d'alias au moment de l'exécution
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.
