2016-05-07 2 views
2

Je suis nouveau à Java et récemment j'ai étudié les variables statiques. Je dois savoir que pour une mémoire variable statique est allouée une seule fois. Cela signifie qu'il va économiser beaucoup de mémoire. Ma question est que si les variables statiques sauve la mémoire, pourquoi ne pas déclarer toutes les variables comme statiques. Cela permettra d'économiser beaucoup de mémoire lors de la création d'une application. Pardonnez-moi si cela semble une question stupide, mais en fait je suis juste un peu curieux.pourquoi ne pas déclarer toutes les variables comme statiques

+1

Ecrivez plus de programmes. Vous avez besoin de variables non statiques pour utiliser correctement les objets. –

+1

Vous pouvez trouver une réponse à cette question ici http://stackoverflow.com/questions/7026507/why-are-static-variables-considered-evil – Mitiku

+2

Si vous voulez avoir plus d'un objet d'un type par ex. deux chaînes, avec des contenus différents, vous ne pouvez pas utiliser de champs statiques. –

Répondre

0

Le point sur la création d'attributs/variables est que vous les voulez comme une "fonctionnalité" pour l'objet. Par exemple, si vous avez une classe "Car", vous aurez peut-être besoin d'une variable pour référencer la couleur de la voiture. Le problème est que chaque instance de "Car" (dans le monde réel ce sera chaque voiture différente) a une valeur, donc chacun doit être une variable "indépendante".

Vous pouvez utiliser des variables statiques pour celles qui sont partagées par tous les objets de cette classe. Par exemple, un compteur pour déterminer combien de voitures sont là. Cette variable appartient à la classe appelée "Car", mais pas à une instance spécifique de cette classe.

1

Ce sont les bases de la POO. Regardez un exemple:

class Person { 
    public String name = "Foo"; 
} 

Champ name n'est pas statique, cela signifie que les objets de la classe Person ne partageront pas et chaque personne aura son propre nom . Et quand vous changez de nom de personne, les autres resteront inchangés. Mais si vous le faites statique:

class Person { 
    public static String name = "Foo"; 
} 

Cela signifie que toutes les personnes partagent le même nom qui est un peu étrange, acceptez-vous)

+0

Merci pour votre réponse. Quoi qu'il en soit, j'ai étudié que le mot-clé final dans java rend la valeur de la variable statique. C'est-à-dire que nous ne pouvons pas changer la valeur de la variable une fois celle-ci déclarée, ce qui est assez similaire à votre cas. Mais en cas de mot-clé statique, nous pouvons changer la valeur de cette variable. Seule la mémoire est allouée une fois. C'est ce qui me rend confus. –

0

Variable statique sont créés par niveau de classe?. Il n'est pas créé lorsqu'un objet de la classe est créé. Pour chaque instance ou objet de la classe, il n'y a qu'une seule valeur d'une variable membre statique. Cela va à l'encontre du but d'avoir des objets et de créer une application autour des objets.

0

Oui, la mémoire serait allouée une fois dans le cycle de vie et est appelée variable de classe. Une variable de classe peut être accédée directement avec la classe, sans avoir besoin de créer une instance. Cela signifierait qu'il peut être consulté de n'importe où et partout. En outre, l'allocation de mémoire signifie que même si la variable n'est pas utilisée à de nombreux endroits dans le code, elle restera dans la mémoire pour toujours tant que le programme est en cours d'exécution et prendrait de l'espace inutile.

+0

petite (le cas échéant) optimisation de cette manière souvent enfreindre les règles de la POO, donner une mauvaise qualité logicielle, etc. Le lieu correct pour une telle discussion est la POO générale, pas n'importe quelle langue. –