Maison  >  Article  >  Java  >  Comparaison détaillée des variables de type de base et des variables de type de référence en Java

Comparaison détaillée des variables de type de base et des variables de type de référence en Java

阿神
阿神original
2017-03-18 13:56:461669parcourir

Type de base :

Inutile de préciser que le type de base est un nombre, un caractère ou une valeur booléenne.

Type de référence :

est un type d'objet, quelle est la valeur ? Sa valeur est une référence à l'espace mémoire, qui est l'adresse. La mémoire pointée contient une valeur ou un ensemble de valeurs représenté par la variable.

Exemple :

int a;
a=250; //Lors de la déclaration de la variable a, le système alloue de l'espace à a.

Le type référence ne l'est pas. Seul l'espace de référence est alloué à la variable, l'espace de données n'est pas alloué, car personne ne sait ce qu'est la donnée, entier, caractère ? Regardons un exemple d'erreur :

MyDate Today;

today.day = 4; //Une erreur s'est produite car l'espace de données de l'objet Today n'est pas alloué.

Alors comment lui attribuer une valeur ? Après la déclaration, une variable de type référence doit ouvrir l'espace de données par instanciation avant que l'objet pointé par la variable puisse être accessible. Par exemple :

MyDate aujourd'hui ; //Allouez la variable à un espace pour enregistrer la référence

today = new MyDate(); //Cette phrase est un processus en 2 étapes. , exécutez new MyDate( ), ouvrez l'espace de données pour la variable du jour, puis effectuez l'opération d'affectation

//Attribuer une variable de référence

MyDate a, b; //Ouvrez deux espaces de référence dans memory

a = new MyDate(); //Ouvrez l'espace de données de l'objet MyDate et attribuez la première adresse de l'espace à a

b = a; 🎜>

est comme indiqué ci-dessous

passage de référence et passage de valeur

type de référence : Sauf lorsqu'une fonction transmet une valeur, c'est "passer par référence". Chaque fois que "=" est utilisé pour attribuer une valeur à une variable objet, c'est "passer par référence".

Transfert de valeur : Le transfert de types de base est un transfert de valeur, tout comme le langage C, lorsque les types de données de base de Java (tels que int, char, double, etc.) sont transmis au corps de la fonction en tant que paramètres d'entrée, les paramètres transmis deviennent des variables locales à l'intérieur du corps de la fonction. Cette variable locale est une copie du paramètre d'entrée Toutes les fonctions. Les opérations internes du corps du numéro sont toutes des opérations sur cette copie. Une fois l'exécution de la fonction terminée, cette variable locale a terminé sa mission et elle n'affectera pas les variables utilisées comme paramètres d'entrée. Le paramètre transmis de cette manière est appelé "valeur Pass".

/*define a class*/class MyDate{
    String  Year;
    String  Month;
    String  Day;
    String  Date;    public MyDate(){
        Year = "1900";
        Month ="01";
        Day = "01";
        Date = Year + "." + Month + "."+ Day;
    }     public String toString(){        return Date;
    }   
}public class ObjRef{  
   MyDate mydate1 = new MyDate();
   MyDate mydate2 = mydate1;// = 使 mydate1和 mydate2将指向同一内存空间   //MyDate mydate2 = new MyDate();//从新new一个对象,则mydate1和mydate2是指向不同的内存空间的:                                  //引用空/间和数据空间都不一样
   public void changeObj(MyDate inObj){
        inObj.Date = "2007.09.26";
    }      
    public static void main(String[] args) {
        ObjRef oRef = new ObjRef();
        System.out.println("Before call changeObj() method: " + oRef.mydate1);
        oRef.changeObj(oRef.mydate1);
        System.out.println("After call changeObj() method: " + oRef.mydate1);
        System.out.println("After call changeObj() method: " + oRef.mydate2);//验证“= mydate1和 mydate2将指向同一内存空间“这一结论      
    }
}
Articles associés :

Une introduction détaillée aux quatre types de référence en Java

Analyse des types de référence dans Java Concept

Explication détaillée de la différence entre les types de données de base JavaScript et les types de référence

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!

Déclaration:
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