Final est un mot-clé en java, qui signifie « constante ». Les données finales en Java ont deux significations spécifiques : 1. Pour les types de données de base, cela signifie une constante au moment de la compilation qui ne change jamais ; 2. Pour les objets ordinaires, cela signifie que la référence est constante et ne peut pas pointer vers un autre objet, mais vers l'objet ; lui-même est Peut être modifié.
Final en Java est un mot-clé, et sa signification est constante.
les données finales ont deux significations spécifiques :
1 Pour les types de données de base, elles représentent une constante de compilation qui ne changera jamais.
2. Pour les objets ordinaires, cela signifie que la référence est constante et ne peut pas pointer vers un autre objet, mais que l'objet lui-même peut être modifié.
Par conséquent, il y a plusieurs points à noter :
1 L'attribut final statique dans la classe signifie qu'il occupe un espace de stockage qui ne peut pas être modifié et doit l'être. initialisé dans la déclaration, ne peut pas être initialisé en construction.
2. L'attribut final de la classe, car ce n'est pas une valeur statique, peut être déclaré dans chaque constructeur.
Notez que les propriétés déclarées finales ne peuvent être initialisées qu'une seule fois ! Non statique est initialisé au plus une fois par instance. Static ne peut être initialisé qu’une seule fois lors de la création de la classe !
3. Pour les objets modifiés de manière finale (tels que les tableaux), le tableau peut être modifié après déclaration, mais il ne peut pas être redirigé vers un nouveau tableau.
public class Test_FinalAndStatic { static final int i=1; final int j; public Test_FinalAndStatic(int j){ //i、j只能被初始化一次 所以j在声明中不能初始化 this.j=j; //同时 i只能在声明中初始化,不能在构造中初始化 } final int[] is=new int[]{1,2,3}; //被final修饰的引用一旦被初始化指向一个对象,就不能再改变,但该对象自身可以改变 //is=new int[]{3,2,1}; error public void dois(){ //is对象自身可以改变 is[0]=4; System.out.print("is="); for(int w:is){ System.out.println(w+":"); } } public void showi(){ System.out.println("i="+i); // i只能占据一段不能改变的存储空间 // i++; error // i=5; error } public void showj(){ System.out.println("j="+j); // j++; error // j=2; error } @Override public String toString(){ dois();showi();showj(); return null; } public static void main(String[]args){ Test_FinalAndStatic t1=new Test_FinalAndStatic(100); t1.toString(); Test_FinalAndStatic t2=new Test_FinalAndStatic(200); t2.toString(); } }
Résultat :
is=4: 2: 3: i=1 j=100 is=4: 2: 3: i=1 j=200
paramètres finaux :
Si les paramètres dans le message sont modifiés par final, cela signifie que dans le message L'objet pointé par la référence du paramètre ne peut pas être modifié.
Méthode finale :
1. Verrouillez la méthode pour empêcher toute classe héritée de changer sa signification et garantir qu'elle ne sera pas écrasée.
2. Convenez avec le compilateur de remplacer tous les appels à cette méthode par des appels en ligne pour améliorer l'efficacité. Cependant, cela n’est plus recommandé.
3. Toutes les méthodes privées sont implicitement désignées comme finales. Puisque la méthode privée ne peut pas être obtenue, elle ne peut pas être réécrite.
classe finale :
ne peut pas être héritée, ne peut pas être modifiée et ne peut pas avoir de sous-classes.
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!