Dabai est devenu un lion de siège des logiciels Java le dix-neuvième jour (méthodes de construction java, constructeurs, concepts d'objets et de références, passage de paramètres)

Méthode de construction

À propos de la méthode de construction dans la classe java:

1. La méthode de construction est également appelée constructeur / constructeur / constructeur

2. La structure grammaticale de la méthode de construction:
[修饰符列表] 构造方法名(形式参数列表){ 构造方法体; }

3. Passez en revue la structure grammaticale des méthodes ordinaires:
[修饰符列表] 返回值类型 方法名(形式参数列表){ 方法体; }

4. Pour le constructeur, le "type de valeur de retour" n'a pas besoin d'être spécifié et void ne peut pas être écrit. Tant que void est écrit, cette méthode devient une méthode ordinaire.

5. Pour la méthode de construction, le nom de la méthode de construction doit être cohérent avec le nom de la classe.

6. Que fait la méthode de construction?

  • La signification de la méthode de construction est qu'un objet peut être créé en appelant la méthode de construction.

7. Comment le constructeur doit-il être appelé?

  • La méthode ordinaire est appelée comme ceci: quand il y a statique dans le 类名.方法名(实参列表)modificateur de méthode :, quand il n'y a pas de statique dans la liste des modificateurs de méthode:引用.方法名(实参列表)
  • new 构造方法名(实参列表)

8. Y a-t-il une valeur de retour après l'exécution de l'appel au constructeur?

  • Chaque méthode de construction a en fait une valeur de retour après la fin de l'exécution, mais cette instruction "return value;" n'a pas besoin d'être écrite. Le programme java renvoie automatiquement la valeur à la fin de la méthode de construction.
  • Et le type de valeur de retour est le type de la classe où se trouve le constructeur. Étant donné que le type de valeur de retour du constructeur est la classe elle-même, le type de valeur de retour n'a pas besoin d'être écrit.

9. Commentaire et décommenter: Ctrl + /, commentaire multiligne: ctrl + shift + / \

10. Lorsqu'aucune méthode de construction n'est définie dans une classe, le système fournit par défaut une méthode de construction sans paramètre pour la classe. Cette méthode de construction est appelée le constructeur par défaut.

11. Lorsqu'une classe définit clairement son constructeur, le système ne fournit plus de constructeur par défaut pour cette classe par défaut. Il est recommandé de fournir manuellement une méthode de construction sans paramètre pour la classe actuelle pendant le développement. Parce que la méthode de construction sans paramètre est trop courante.

Le rôle de la méthode de construction

  • 1. Créez un objet
  • 2. Lors de la création de l'objet, initialisez l'espace mémoire de la variable d'instance.

Les variables d'instance des variables membres appartiennent aux variables de niveau équipe. Ces variables doivent avoir des objets avant de pouvoir avoir des variables d'instance.

Lorsque la variable d'instance n'est pas affectée manuellement, le système l'affecte par défaut. Quand l'affectation par défaut du système est-elle alors terminée? Est-ce pendant le chargement de la classe?

  • Non, car seuls les fragments de code sont chargés lorsque la classe est chargée et l'objet n'a pas encore été créé. La variable d'instance n'est donc pas initialisée pour le moment.
  • En fait, l'espace mémoire des variables d'instance est ouvert et initialisé lors de l'exécution de la méthode de construction.
  • Lorsque le système attribue par défaut, cela se fait également lors de l'exécution de la méthode de construction.

Objets et références

Objets et références

  • Objet : L'espace mémoire actuellement ouvert dans la mémoire du tas à l'aide de l'opérateur new est appelé un objet.
  • Référence : C'est une variable, pas nécessairement une variable locale, mais aussi une variable membre. La référence enregistre l'adresse mémoire et pointe vers l'objet dans la mémoire du tas.
  • Tous les accès aux données liées à l'instance doivent être accédés d' “引用.”une certaine manière, car l'objet ne peut être trouvé que par référence.
  • Il n'y a qu'une référence nulle, une exception de pointeur nul se produira lors de l'accès aux données liées à l'instance d'objet.

Passage de paramètres

La principale recherche et étude est que lorsque la méthode est appelée, le problème de la transmission des paramètres est en jeu. Comment transférer des données?

  • Passer par valeur

int i = 10;
int j = i; i est passé à j, en fait seuls les 10 sauvegardés dans la variable i sont passés à j, j est en fait un tout nouvel espace mémoire

User u = 0x1234;
User u2 = u;
u est passé à u2, attribuant en fait la valeur de 0x1234 à u2, u et u2 sont en fait deux variables locales différentes, mais ces deux variables pointent vers la mémoire du tas Le même objet Java.

Le problème du transfert de paramètres impliqué dans l'appel de méthode en langage Java

Le paramètre passant passe en fait la valeur spécifique enregistrée dans la variable

Exemple 1:

public class Test01()
{
    
    
	public static void main(String[] args){
    
    
		
		//int i = 10;
		//add(i)等同于:add(10)
		int i = 10;
		add(i);//add方法调用的时候,给add方法传递了一个变量i,实际上传递的是变量中保存的具体值
		System.out.println("main-->"+ i );
	}

	public static void add(int i){
    
    
		i++;
		System.out.println("add-->"+ i);
	}
}

Résultat de la compilation:
Résultat de la compilation
Exemple 2:

public class Test02(){
    
    
 public static void main(String[] args){
    
    
        User u = new User(20);
      
       //User u =0x1234;
       //add(u)等同于:add(0x1234)
        add(u);//传递u给add方法的时候,实际上传递的是U变量中保存的值,只不过这个值是一个java对象的内存地址
        System.out.println("main-->"+ u.age);
    }

    public static void add(User u ){
    
    
        u.age++;
        System.out.println("add-->"+ u.age);
    }
}

class User
{
    
    
    int age;
    public User(int i){
    
    
        age = i;
    }
}

Résultats de la compilation:
Insérez la description de l'image ici
conclusion finale:

Lorsque la méthode est appelée, cela implique des problèmes de paramètres. Lors de la transmission, Java ne suit qu'un mécanisme grammatical, qui consiste à transmettre la "valeur" stockée dans la variable, mais parfois la valeur est une valeur littérale de 10. C'est l'adresse mémoire 0x1234 d'un autre objet java.

Je suppose que tu aimes

Origine blog.csdn.net/qq2632246528/article/details/113062589
conseillé
Classement