Maison Java Javacommencer modificateur final orienté objet Java

modificateur final orienté objet Java

Nov 26, 2019 pm 02:43 PM
final java 修饰符 面向对象

modificateur final orienté objet Java

1. Définition du modificateur final :

Le mot-clé final peut être utilisé pour modifier les classes, les variables et les méthodes

final modification Lorsqu'une variable est utilisée, cela signifie que la variable ne peut plus être modifiée une fois qu'elle a obtenu la valeur initiale (à proprement parler : une variable modifiée par final ne peut pas être modifiée. Une fois la valeur initiale obtenue, la valeur de la variable finale ne peut pas être réaffectée )

final peut modifier non seulement les variables membres (variables de classe et variables d'instance), mais également les variables locales et les paramètres formels

Tutoriels d'apprentissage vidéo associés : apprentissage en ligne Java

2. La syntaxe des variables membres finales stipule :

Les variables membres modifiées finales doivent spécifier explicitement la valeur initiale par le programmeur, et le système n'initialisera pas implicitement les membres finaux.

1. Les endroits où les variables de classe modifiées finales et les variables d'instance peuvent définir des valeurs initiales sont les suivantes :

Variables de classe : la valeur initiale doit être spécifiée dans le bloc d'initialisation statique ou lors de la déclaration de la variable de classe, et ne peut être spécifiée qu'à l'un des deux endroits

variables d'instance : la valeur initiale doit être spécifiée dans un bloc d'initialisation non statique, dans la déclaration de la variable d'instance, ou dans un constructeur, et ne peut être spécifié qu'à trois endroits L'un d'entre eux spécifie

Remarque : Si un bloc d'initialisation normal a spécifié une valeur initiale pour une variable d'instance, vous ne pouvez plus spécifier de valeur initiale pour la variable d'instance dans le constructeur

Le programme suivant démontre l'effet des variables membres finales modifiées :

package lextends;
public class FinalVariableTest {
    //定义成员变量时指定默认值,合法
    final int a = 6;
    //下面变量将在构造器或初始化块中分配初始值
    final String str;
    final int c;
    final static double d;

    //既没有指定默认值,又没有在初始化块、构造器中指定初始值
    //下面定义的ch实例是不合法的
    //final char ch;
    //初始化块,可对没有指定默认值的实例变量指定初始值
    {
        //在初始化块中为实例变量指定初始值,合法
        str = "Hello";
        //定义a实例变量时已经指定了默认值
        //不能为a重新赋值,因此下面赋值语句非法
        //a=9;
    }

    //静态初始化块,可对没有指定默认值的类变量指定初始值
    static {
        //在静态初始化块中为类变量指定初始值,合法
        d = 5.6;
    }

    //构造器,可以对既没有指定默认值,又没有在初始化块中,指定初始值的实例变量指定初始值
    public FinalVariableTest() {
        //如果在初始化块中已经对str指定了初始值
        //那么在构造器中不能对final变量重新赋值,下面赋值语句非法
        //str="java"
        c = 5;
    }

    public void changeFinal() {
        //普通方法不能为final修饰的成员变量赋值
        //d=1.2
        //不能在普通方法中为final成员变量指定初始值
        //ch = 'a';
    }
public static void mian(String[] args){
    FinalVariableTest ft= new FinalVariableTest();
    System.out.println(ft.a);
    System.out.println(ft.c);
    System.out.println(ft.d);}
}
Copier après la connexion

2. Si vous prévoyez d'initialiser les variables membres finales dans le constructeur ou l'initialisation bloc, n’accédez pas à la valeur de la variable membre avant l’initialisation.

package lextends;
public class FinalErrorTest {
    //定义一个final修饰的实例变量
    //系统不会对final成员变量进行默认初始化
    final int age;
    {
        //age没有初始化,所以此处代码将引起错误,因为它试图访问一个未初始化的变量
        //只要把定义age时的final修饰符去掉,程序就正确了
        System.out.println(age);
        
        age=6;
        System.out.println(age);
    }
    public static void main(String[] args){
        new FinalErrorTest();
    }
}
Copier après la connexion

3. Variables locales finales

Définition : Le système n'initialisera pas les variables locales et les variables locales doivent être explicitement initialisées par le programmeur. Par conséquent, lorsque vous utilisez final pour modifier des variables locales, vous pouvez spécifier une valeur par défaut lors de sa définition, ou vous ne pouvez pas spécifier de valeur par défaut.

Le programme suivant démontre la modification finale des variables locales et des paramètres formels :

(Le cas des paramètres formels finaux modifiés, car lorsque cette méthode est appelée, le système termine l'initialisation en fonction du paramètres transmis. Par conséquent, les valeurs ne peuvent pas être attribuées à l'aide du modificateur final.)

package lextends;
public class FinalLocalVariable {
    public void test(final int a){
        //不能对final修饰的形参赋值,下面语句非法
        //a=5;
    }
    public static void mian(String[] args){
        //定义final局部变量时指定默认值,则str变量无法重新赋值
        final String str="hello";
        //下面赋值语句非法
        //str="Java";
        
        //定义final局部变量时没有指定默认值,则d变量可被赋值一次
        final double d;
        d=5.6;
        //对final变量重新赋值,下面语句非法
        //d=6.4;
    }
}
Copier après la connexion

4. La différence entre les variables de type de base modifiées finales et les variables de type de référence

Les variables de type référence utilisant la modification finale ne peuvent pas être réaffectées, mais le contenu de l'objet référencé par la variable de type référence peut être modifié

Par exemple, l'objet tableau référencé par la variable iArr ci-dessous, la variable iArr après la modification finale La modification ne peut pas être réaffectée, mais le tableau du tableau référencé par iArr Elements peut être modifié

eg.
//final修饰数组元素,iArr是一个引用变量
final int[] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//对数组元素进行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//对数组进行元素赋值,合法
iArr[2]=-8;
System.out.println(Arrays.toString(iArr));
//下面语句对iArr重新赋值,非法
//iArr=null;
Copier après la connexion

5. Variables finales pouvant exécuter un "remplacement de macro"

1. Pour une variable finale, qu'il s'agisse d'une variable de classe ou d'instance, ou d'une variable locale, tant que la variable remplit trois conditions, cette variable finale n'est plus une variable, mais équivalente à une quantité directe.

(1) Utilisez le modificateur final pour modifier

(2) Spécifiez la valeur initiale lors de la définition de la variable finale

(3) La valeur initiale peut être définie à la compilation temps déterminé

2. Une utilisation importante du modificateur final est de définir des "variables macro". Lorsqu'une variable finale est définie, une valeur initiale est attribuée à la variable, et la variable peut être déterminée lorsqu'il s'agit d'une variable. Ensuite, cette variable finale est essentiellement une "variable macro", et le compilateur supprimera toutes les variables du programme. qui utilisent cette variable place directement remplacée par la valeur de la variable.

3.

eg.
String s1="疯狂Java";
//s2变量引用的字符串可以在编译时就确定下来
//因此s2直接引用变量池中已有的"疯狂Java"字符串
String s2="疯狂"+"Java";
System.out.println(s1==s2);//true

//定义两个字符串直接量
String str1="疯狂";
String str2="Java";
String s3=str1+str2;
System.out.println(s1==s3);//false
Copier après la connexion

Pour s3, sa valeur est obtenue en concaténant str1 et str2 puisque str1 et str2 ne sont que deux variables ordinaires, le compilateur n'exécutera pas la "macro" Remplacer ", le compilateur ne peut donc pas déterminer la valeur de s3 et ne peut pas faire pointer s3 vers "Crazy Java" mis en cache dans le pool de chaînes.

Pour plus d'articles et de didacticiels sur Java, vous pouvez visiter : Tutoriel d'introduction à Java

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

See all articles