Qu'est-ce que l'utilisation d'un privé variable statique en Java?
Si une variable est déclarée comme public static varName;
, alors je peux y accéder à partir de n'importe où que ClassName.varName
. Je suis également conscient que les membres statiques sont partagés par toutes les instances d'une classe et ne sont pas réaffectés dans chaque instance.
Est de déclarer une variable comme private static varName;
toute différente de la déclaration d'une variable private varName;
?
Dans les deux cas, il ne peut être accédé que ClassName.varName
ou ClassInstance.varName
de toute autre classe.
Ne déclarant la variable static de lui donner d'autres propriétés particulières?
- Java les noms de variables ne peuvent pas contenir des tirets (-).
Vous devez vous connecter pour publier un commentaire.
Bien sûr, il peut être accédé comme
ClassName.var_name
, mais seulement à partir de l'intérieur de la classe dans laquelle il est défini - c'est parce qu'il est défini commeprivate
.public static
ouprivate static
variables sont souvent utilisés pour les constantes. Par exemple, beaucoup de gens n'aiment pas "coder en dur" constantes dans leur code; - ils faire unpublic static
ouprivate static
variable avec un nom explicite et de l'utiliser dans leur code, ce qui devrait rendre le code plus lisible. (Vous devez également faire de telles constantesfinal
).Par exemple:
Qu'elle
public
ouprivate
dépend si vous voulez que les variables qui doivent être visibles de l'extérieur de la classe ou pas.ClassName.var_nam
? Où je peux y accéder directement :var_nam
au sein de la classeVariables statiques ont une valeur unique pour toutes les instances d'une classe.
Si vous effectuez quelque chose comme:
et puis vous vouliez changer votre nom, c'est bien, mon nom reste le même. Si, toutefois, vous avez voulu le modifier de sorte que vous avait 17 yeux, puis tout le monde aurait également 17 yeux.
Privé variables statiques sont utiles dans la même manière que privé, les variables d'instance sont utiles: ils stockent de l'état qui est accessible uniquement par le code au sein de la même classe. L'accessibilité (privé/public/etc) et de l'instance/la nature statique de la variable sont entièrement orthogonale concepts.
Je voudrais éviter de penser à des variables statiques comme étant partagé entre "toutes les instances" de la classe - qui suggère, il y a au moins un instance pour que l'état soit présent. Sans une variable statique est associée avec le type lui-même au lieu de tout des instances du type.
Donc, à tout moment vous voulez un certain état qui est associée avec le type plutôt que d'un cas particulier, et que vous voulez garder cet état privé (permettant peut-être d'accès contrôlé via les propriétés, par exemple), il est logique d'avoir un privé variable statique.
En aparté, je vous recommande fortement que le seulement type de variables que vous le rendre public (ou même non-privé) sont des constantes static final variables immuables types. Tout le reste doit être privé de l'amour de la séparation de l'API et la mise en œuvre (entre autres choses).
private static
variable aurait besoin d'une instance de classe pour y accéder.Bien,
private static
variables peuvent être utilisées pour partager des données entre les instances de cette classe. Pendant que vous êtes correct que nous ne pouvons pas accéder à laprivate static
variables à l'aide de constructions comme lesClassName.member
ouClassInstance.member
mais le membre sera toujours visible à partir de méthodes de la classe ou des instances de cette classe. Donc en effet les instances de cette classe sera toujours en mesure de vous référer à membre.Bien vous êtes en droit public des variables statiques sont utilisées sans en faire une instance de la classe mais les variables statiques sont pas. La principale différence entre eux et où j'utilise le privé variables statiques, c'est quand vous avez besoin d'utiliser une variable dans une fonction statique. Pour les fonctions statiques, vous pouvez uniquement utiliser des variables statiques, afin de vous les rendre privés de ne pas accéder à partir d'autres classes. C'est le seul cas je utiliser private static pour.
Voici un exemple:
Person
, alors il serait probablement un bug, parce que vous ne pouvez pas avoir plusieurs personnes de différentes tranches d'âge (si c'était un cas d'utilisation).Oui, les deux sont différents. Et le premier est appelé
class variable
parce qu'elle détient seule valeur pour queclass
, alors que l'autre est appeléinstance variable
car il peut contenir une valeur différente pour différentsinstances(Objects)
. Le premier est créé qu'une seule fois dans la jvm et un autre est créé qu'une seule fois par exemple j'.e si vous avez 10 cas, alors vous aurez 10private varName;
dans la jvm.Oui, les variables statiques obtient des propriétés différentes que la normale des variables d'instance. Je l'ai mentionné à quelques déjà et nous allons voir quelques-uns ici:
class variables
(variables d'instance qui sont déclarées comme statique) peut être consulté directement en utilisant le nom de classe commeClassName.varName
. Et tous les objets de cette classe peut accéder et modifier sa valeur à la différence des variables d'instance sont accessibles que par ses objets respectifs. Classe de variables peuvent être utilisées dans des méthodes statiques.Logiquement,
private static variable
n'est pas différent depublic static variable
plutôt le premier vous donne plus de contrôle. OMI, vous pouvez littéralement remplacerpublic static variable
parprivate static variable
avec l'aide depublic static
getter et setter.Un largement utilisée de la zone de
private static variable
est dans la mise en œuvre de la simpleSingleton
modèle où vous aurez une seule instance de cette classe dans le monde entier. Icistatic
identificateur joue un rôle crucial pour faire de cette instance unique est accessible par le monde extérieur(bien public static méthode de lecture joue également le rôle principal).Qu'est-ce que l'utilisation d'un privé statique de la variable de classe?
Disons que vous avez un livre de la bibliothèque de la Classe. Chaque fois que vous créez un nouveau Livre, vous voulez affecter un id unique. Une façon est de simplement commencer à 0 et incrémenter le numéro d'identification. Mais, comment font tous les autres livres de connaître le dernier créé numéro d'identification? Simple, l'enregistrer comme une variable statique. Ne les patrons ont besoin de savoir que la réelle interne, le numéro d'identification pour chaque livre? Pas de. Cette information est privée.
C'est un exemple artificiel, mais je suis sûr que vous pouvez facile de penser à des cas où vous souhaiteriez toutes les instances de classe à avoir accès à l'information commune qui devrait être privé de tout le monde. Ou même si vous ne pouvez pas, il est bien pratique pour rendre les choses aussi privée que possible. Que faire si vous avez accidentellement fait que numBooks domaine public, même si le Livre les utilisateurs n'étaient pas censés faire quelque chose avec elle. Alors quelqu'un pourrait modifier le nombre de Livres sans la création d'un nouveau Livre.
Très sournois!
Privé de mots clés à utiliser pour la variable d'accès au sein de la classe et de maintien statique dans le sens que l'on peut accéder à la variable dans la méthode statique mais aussi de variable de référence ne peut pas accéder à la méthode statique.
Un autre point de vue :
Lorsque dans une méthode statique vous utilisez une variable, la variable doivent être statiques trop
à titre d'exemple:
Les variables statiques sont ces variables qui sont communs à toutes les instances d'une classe..si une instance de changements.. alors la valeur de la variable statique sera mis à jour pour tous les autres cas
Pour certaines personnes, cela fait plus de sens si ils le voient dans un couple de différentes langues, de sorte que j'ai écrit un exemple en Java et PHP sur ma page où je vous expliquer certains de ces modificateurs. Vous pensez peut-être à propos de cette question de façon incorrecte.
Vous devriez regarder dans mes exemples si ça n'a pas de sens ci-dessous. Rendez-vous ici http://www.siteconsortium.com/h/D0000D.php
La ligne de fond est que c'est à peu près exactement ce qu'il dit c'est. C'est une variable membre statique qui est privé. Par exemple, si vous souhaitez créer un objet Singleton pourquoi voudriez-vous faire la SingletonExample.variable d'instance publique. Si vous avez une personne qui a été à l'aide de la classe peut facilement remplacer la valeur.
C'est tout ce qu'il est.
Si vous utilisez privé variables statiques dans votre classe, les classes internes Static dans votre classe peut atteindre vos variables. Ce qui est parfaitement bon pour le contexte de sécurité.
Si une variable est définie comme statique publique, il peut être accédé par l'intermédiaire de son nom de classe de toute la classe.
Habituellement, les fonctions sont définies comme publiques statiques qui peuvent être accessibles simplement en appelant la mise en œuvre de nom de la classe.
Un très bon exemple de cela est la
sleep()
méthode dans la classe ThreadSi une variable est définie comme statique privé, il peut être accessible qu'à l'intérieur de cette classe, donc pas de nom de classe est nécessaire, ou vous pouvez toujours utiliser le nom de la classe (jusqu'à vous).
La différence entre privé var_name et private static var_name est privé de variables statiques peuvent être consultées que par les méthodes statiques de la classe pendant que les variables peuvent être consultées par n'importe quelle méthode de la classe(à l'exception des méthodes statiques)
Un très bon exemple de cela est que, bien que la définition de connexions de base de données ou des constantes qui nécessitent déclarant la variable en tant que private static .
Un autre exemple courant est
Je suis nouveau sur Java, mais j'utilise des variables statiques, comme je suppose que beaucoup de gens le font, il suffit de compter le nombre d'instances de la classe. par exemple:
Alors vous pouvez sysout:
Vous pouvez également accéder à numCompanies de chaque instance de la classe (que je ne comprends pas complètement), mais il ne sera pas dans un "de manière statique". Je n'ai aucune idée si c'est la meilleure pratique ou pas, mais il fait sens pour moi.
*)Si une variable est déclarée comme privée, elle n'est pas visible à l'extérieur de la classe.c'est appelé comme datahiding.
*)Si une variable est déclarée comme statique la valeur de la variable est de même pour toutes les instances et nous n'avons besoin de créer un objet à appeler cette variable.nous pouvons appeler cette variable par simple
classname.variablename;
privé statique de la variable sera partagée dans la sous-classe ainsi. Si vous avez modifié dans une sous-classe et l'autre sous-classe d'obtenir la variation de la valeur, dans ce cas, il peut ne pas ce que vous attendez.
ThreadLocal variables sont généralement mis en œuvre en tant que private static.
De cette manière, elles ne sont pas liées à la classe et à chaque thread possède sa propre référence à sa propre "threadLocal" objet.
Dans l'exemple suivant,
eye
est modifié par PersonB, tandis queleg
reste le même. C'est parce qu'une variable privée fait une copie de lui-même de la méthode, de sorte que sa valeur d'origine reste la même; tandis qu'un private static valeur a qu'une seule copie pour toutes les méthodes d'action, de sorte que la modification de son changement de sa valeur d'origine.}