J'ai vu beaucoup de code où les gens écrivent public static final String mystring = ...
.__ et n'utilisent qu'une valeur.
Pourquoi doivent-ils faire cela? Pourquoi doivent-ils initialiser la valeur avec final
avant de l’utiliser?
METTRE À JOUR
Ok, merci à tous pour toutes vos réponses, je comprends le sens de ces clés (finale statique publique). Ce que je ne comprends pas, c'est pourquoi les gens l’utilisent même si la constante ne sera utilisée qu’à un seul endroit et dans la même classe. pourquoi le déclarer? pourquoi n'utilisons-nous pas simplement la variable?
final
indique que la valeur de la variable ne changera pas - en d'autres termes, une variable dont la valeur ne peut pas être modifiée après sa déclaration.
Utilisez public final static String
lorsque vous souhaitez créer une String
qui:
static
: aucune instance nécessaire pour l'utiliser), et quefinal
), par exemple lorsque vous souhaitez définir une constante String
qui sera disponible pour toutes les instances de la classe et pour les autres objets utilisant cette classe.Exemple:
public final static String MY_CONSTANT = "SomeValue";
// ... in some other code, possibly in another object, use the constant:
if (input.equals(MyClass.MY_CONSTANT)
De même:
public static final int ERROR_CODE = 127;
Il n'est pas obligatoire d'utiliser final
, mais il empêche une constante d'être modifié par inadvertance pendant l'exécution du programme et sert d'indicateur indiquant que la variable est une constante.
Même si la constante ne sera utilisée - lue - que dans la classe en cours et/ou à un seul endroit, il est recommandé de déclarer toutes les constantes comme étant final
: c'est plus clair, et pendant la durée de vie du code, la constante peut finir par être utilisée dans plus d'un endroit.
De plus, l'utilisation de final
peut permettre à la mise en oeuvre d'effectuer certaines optimisations, par exemple. en insérant une valeur réelle dans laquelle la constante est utilisée.
final..C'est un mot clé qui est utilisé pour rendre la chaîne constante. Vous ne pouvez pas changer la valeur de cette chaîne. Regardez l'exemple ci-dessous:
public class StringTest {
static final String str = "Hello";
public static void main(String args[]) {
// str = "world"; // gives error
System.out.println(str); // called without the help of an object
System.out.println(StringTest.str);// called with class name
}
}
Merci
Le mot-clé final signifie que la valeur est constante (elle ne peut pas être modifiée). C'est analogue à const en C.
Et vous pouvez traiter static comme une variable globale ayant une portée. Cela signifie fondamentalement que si vous le changez pour un objet, il le sera pour tous comme une variable globale (limitée par la portée).
J'espère que ça aide.
final
indique que la valeur ne peut pas être modifiée une fois définie. static
vous permet de définir la valeur. Cette valeur sera la même pour TOUTES les instances de la classe qui l'utilise. En outre, vous pouvez accéder à la valeur d'une chaîne public static
sans avoir d'instance de classe.
static
signifie que l'objet ne sera créé qu'une seule fois et qu'aucun objet d'instance ne le contient. La meilleure façon d'utiliser ce que vous écrivez est d'utiliser quelque chose qui est commun à tous les objets de la classe et qui ne changera jamais. Il pourrait même être utilisé sans créer d'objet du tout.
Il est généralement préférable d’utiliser final lorsque vous vous attendez à ce que ce soit final
afin que le compilateur applique cette règle et que vous le sachiez. static
vous assure de ne pas gaspiller de mémoire en créant un grand nombre de choses identiques si elles ont la même valeur pour tous les objets.
Généralement, vous définissez des constantes que vous réutilisez à plusieurs endroits, ce qui en fait un point de changement unique, utilisé dans une classe unique ou partagé entre plusieurs packages. Faire une finale variable éviter les changements accidentels.
public le rend accessible aux autres classes. Vous pouvez l'utiliser sans instancier de la classe ni utiliser d'objet.
static en fait une valeur uniforme pour toutes les instances de la classe . Cela vous évite de gaspiller de la mémoire en créant une grande partie de la même chose si sa valeur est identique pour tous les objets.
final en fait une valeur non modifiable. C'est une valeur "constante" qui est la même pour toutes les instances de la classe et ne peut pas être modifiée.
C’est un peu la norme/meilleure pratique . Il existe déjà des réponses à la liste des scénarios, mais pour votre deuxième question:
Pourquoi doivent-ils faire cela? Pourquoi doivent-ils initialiser la valeur en tant que finale avant de l’utiliser?
Les constantes publiques et les champs initialisés lors de la déclaration doivent être "statiques finales" plutôt que simplement "finales"
Voici certaines des raisons pour lesquelles cela devrait être comme ceci:
Rendre une constante publique juste final, par opposition à final statique, conduit à dupliquer sa valeur pour chaque instance de la classe, augmentant inutilement la quantité de mémoire requise pour exécuter l'application.
En outre, lorsqu'un champ final non public n'est pas également statique, cela signifie que différentes instances peuvent avoir des valeurs différentes. Cependant, l'initialisation d'un champ final non statique dans sa déclaration oblige chaque instance à avoir la même valeur en raison du comportement du champ final .
public
le rend accessible à travers d'autres classes .static
en fait une valeur uniforme pour toutes les instances de la classe .final
en fait une valeur non modifiable . Il s'agit donc en gros d'une valeur " constante " qui est La même chose dans toutes les instances de la classe et qui ne peut pas être modifiée . En ce qui concerne votre préoccupation "Ce que je ne comprends pas, c’est pourquoi les gens l’utilisent même si la constante ne sera utilisée qu’à un seul endroit et dans la même classe. Pourquoi la déclarer? Pourquoi n'utilisons-nous pas simplement la variable? " Je dirais que, puisqu'il s'agit d'un champ public, la valeur constante peut également être utilisée ailleurs dans une autre classe à l'aide de ClassName.value. Par exemple: une classe nommée Math peut avoir PI comme valeur statique longue finale accessible à Math.PI.
Pourquoi les gens utilisent-ils des constantes dans les classes au lieu d'une variable?
lisibilité et maintenabilité,
avoir un nombre tel que 40.023 dans votre code ne dit pas grand-chose sur ce que le nombre représente, nous le remplaçons donc par un mot en majuscule comme "USER_AGE_YEARS". Plus tard, lorsque nous examinons le code, nous voyons clairement ce que ce nombre représente.
Pourquoi n'utilisons-nous pas simplement une variable? Eh bien nous le ferions si nous savions que le nombre changerait, mais si c'est un nombre qui ne changera pas, comme 3.14159 .. nous le rendrons final.
Mais que se passe-t-il si ce n'est pas un nombre comme une chaîne? Dans ce cas, c'est principalement pour la maintenabilité, si vous utilisez une chaîne plusieurs fois dans votre code (et qu'elle ne changera pas à l'exécution), il est pratique de la placer comme chaîne finale en haut de la classe. Ainsi, lorsque vous souhaitez le changer, il n’ya qu’un seul endroit pour le changer plutôt que plusieurs.
Par exemple, si vous avez un message d'erreur qui s'imprime plusieurs fois dans votre code, la dernière chaîne est ERROR_MESSAGE = "Une erreur s'est produite." est plus facile à maintenir, si vous voulez changer de "Quelque chose a mal tourné." Pour "Il est trop tard, jim il est déjà mort", il vous suffirait de changer cette ligne plutôt que tous les endroits où vous utiliseriez ce commentaire.