Maison > Java > javaDidacticiel > Java transmet-il les primitives par référence ?

Java transmet-il les primitives par référence ?

Mary-Kate Olsen
Libérer: 2024-11-07 17:45:02
original
1051 Les gens l'ont consulté

Does Java Pass Primitives by Reference?

Passage par référence pour les primitives en Java

Java utilise le passage par valeur, contrairement à C , qui utilise le passage par référence. Cela peut créer des scénarios dans lesquels la modification d'un type de données primitif (par exemple, int, float) dans une méthode n'affecte pas sa valeur en dehors de la méthode.

Considérez ce code Java :

public class XYZ {
    public static void main() {
        int toyNumber = 5;
        XYZ temp = new XYZ();
        temp.play(toyNumber);
        System.out.println("Toy number in main " + toyNumber);
    }

    void play(int toyNumber) {
        System.out.println("Toy number in play " + toyNumber);
        toyNumber++;
        System.out.println("Toy number in play after increment " + toyNumber);
    }
}
Copier après la connexion

Ce code s'affiche :

Toy number in play 5
Toy number in play after increment 6
Toy number in main 5
Copier après la connexion

La variable toyNumber n'est pas modifiée en dehors de la méthode play() car elle est passée par valeur.

Alternatives au passage par référence en Java :

Pour imiter le passage C par référence en Java pour les primitives, plusieurs options sont disponibles :

1. Variable membre publique :

Créez une classe avec une variable membre publique pour toyNumber et transmettez une référence à la classe.

class MyToy {
    public int toyNumber;
}
Copier après la connexion
void play(MyToy toy) {
    System.out.println("Toy number in play " + toy.toyNumber);
    toy.toyNumber++;
    System.out.println("Toy number in play after increment " + toy.toyNumber);
}
Copier après la connexion

2. Valeur de retour :

Au lieu de passer par référence, renvoyez la valeur modifiée de la méthode.

int play(int toyNumber) {
    System.out.println("Toy number in play " + toyNumber);
    toyNumber++;
    System.out.println("Toy number in play after increment " + toyNumber);
    return toyNumber;
}
Copier après la connexion

Dans la méthode principale, mettez à jour toyNumber en utilisant la valeur renvoyée.

3. Classe/Variable statique :

Si les méthodes play() et main() font partie de la même classe, convertissez toyNumber en variable membre de classe.

4. Tableau d'un élément :

Il s'agit d'un hack mais implique de transmettre un tableau à un seul élément et de modifier sa valeur.

void play(int[] toyNumber) {
    System.out.println("Toy number in play " + toyNumber[0]);
    toyNumber[0]++;
    System.out.println("Toy number in play after increment " + toyNumber[0]);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal