Maison > Java > javaDidacticiel > Explication de l'essence de Java final

Explication de l'essence de Java final

(*-*)浩
Libérer: 2019-09-23 16:32:51
avant
2558 Les gens l'ont consulté

Explication de l'essence de Java final

Signification : moyen final [ne peut être attribué qu'une seule fois].

Emplacement de l'affectation : Dans [Assignation à la déclaration], [Assignation dans le constructeur]

Exemple :

package com.dada.data;
 
public class TestFinal {
    // 1.声明时赋值
    private final int i = 0;
    private final int j;
    public TestF() {
        // 2.构造方法中赋值
        j = 10;
    }
}
Copier après la connexion

Remarque : Nous disons que final ne peut être attribué qu'une seule fois, mais nous savons qu'en Java [il existe deux types de valeurs], [valeurs des types de données de base] et [valeurs des types de données de référence]. affectation Il s'agit d'attribuer directement la [valeur à la variable]. Pour les types de données de référence, il s'agit d'[attribuer la référence à la variable].

Par conséquent : la signification de pouvoir attribuer une valeur une seule fois est divisée en deux situations. 1. S'il s'agit d'un type de données de base, alors la valeur elle-même ne peut pas être modifiée. 2. S'il s'agit d'une valeur ; d'un type de données de référence, c'est-à-dire que la référence ne peut pas être modifiée, mais le contenu de la référence peut être modifié.

Exemple :

Définir la classe d'élève :

package com.dada.data;
 
public class Student {
	private int id;
	private String name;
	private int score;
	public Student(int id, String name, int score) {
		this.id = id;
		this.name = name;
		this.score = score;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	
	@Override
	public String toString() {
		return "id: " + id + "\t name:" + name + "\tscore:" + score;
	}
}
Copier après la connexion

Définir la classe de test :

package com.dada.data;
 
public class TestFinal {
	private final Student ss;
	
	public static void main(String[] args) {
		TestFinal tf = new TestFinal();
	}
	public TestFinal() {
		Student student = new Student(1, "dada", 3);
		// 第一次赋值
		ss = student;
		System.out.println(ss.toString());
		
		// 修改引用所对应的对象的内容
		student.setId(2);
		student.setName("hehe");
		student.setScore(10);
		System.out.println(ss.toString());
	}
}
Copier après la connexion

Résultat de sortie :

id: 1     name:dada    score:3
id: 2     name:hehe    score:10
Copier après la connexion

Résumé :

À partir de l'exemple ci-dessus, nous pouvons connaître le contenu de la référence après la variable est modifié par final Il peut toujours être modifié. La raison pour laquelle nous pensons souvent qu'il ne peut pas être modifié est parce que :

1 Habituellement, nous attribuons des valeurs lors de la définition des variables. être effectué pour les données de type de base modifiées.

2. Pour les données de type référence, parce que nous ne pouvons pas obtenir la référence correspondante, nous pensons également que les données de type référence ne peuvent pas être modifiées.

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!

Étiquettes associées:
source:csdn.net
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal