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

Explication de l'essence de Java final

(*-*)浩
(*-*)浩avant
2019-09-23 16:32:512462parcourir

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;
    }
}

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;
	}
}

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());
	}
}

Résultat de sortie :

id: 1     name:dada    score:3
id: 2     name:hehe    score:10

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer