77 votes

Java N'est nulle variable nécessitent de l'espace dans la mémoire

class CheckStore {
    private String displayText;
    private boolean state;
    private String meaningfulText;
    private URL url;

    public CheckStore(String text, boolean state) {
        this.displayText = text;
        this.state = state;
    }
    :
    :
}

Comme je suis l'initialisation de seulement deux variables (displayText et state) dans le constructeur, le reste deux variables (meaningfulText et url qui aura la valeur de null) aura besoin d'espace dans la mémoire pour stocker null de la valeur.

T1. Je pense qu'ils auront besoin d'espace. Si elles le veulent, alors la quantité de mémoire un null de la valeur dans la mémoire (comme int prend 4 octets).

T2. De combien d'espace d'une chaîne de caractères dans la mémoire. Je suppose que cela dépendra de la longueur de la chaîne. Alors, comment beaucoup d'espace, une chaîne de combien de longueur?

71voto

dsimcha Points 32831

En Java, null est juste une valeur de référence (qui est en fait une restriction de pointeur) peuvent avoir. Cela signifie que la référence se rapporte à rien. Dans ce cas, vous consomment toujours de l'espace pour la référence. C'est 4 octets sur les systèmes 32 bits ou 8 octets sur les systèmes 64 bits. Cependant, vous n'êtes pas consommer tout l'espace de la classe que les points de référence jusqu'à ce que vous avez réellement attribuer à une instance de cette classe à la point de la référence.

Edit: Aussi loin que la Chaîne de caractères, un String en Java tient sur 16 bits (2 octets) pour chaque caractère, et une petite quantité de la comptabilité des frais généraux, ce qui est probablement sans-papiers et la mise en œuvre spécifique.

14voto

Jacky Points 1063

Je tiens à ajouter:

  1. variable de type référence seront initialisées avec la valeur null.
  2. null n'est pas un objet. parce que (null instanceof Objet) est égal à false
  3. il y a seulement une valeur null dans la JVM. N'importe comment beaucoup de variables se rapportent à la valeur null.

    Objet s = (String)null;

    Objet i = (Integer)null;

    Système.out.println(s == i);//true

-1voto

Nate W. Points 5211

Si un objet est nulle, ce qui signifie simplement que le morceau de la mémoire allouée pour cet objet est "vide", ou "zéro serais" hors de. À cet égard, il n'est pas judicieux de penser à la valeur null comme quelque chose qui a une taille; c'est la "taille" est tout simplement la taille de l'objet qu'il est nul avec l'extérieur.

Pour fournir quelques précisions sur les raisons de cette: Lorsque vous créez une instance de votre classe, de la mémoire doit être alloué pour chacun de ses champs, indépendamment de leur valeur (c'est à dire, s'ils sont explicitement initialisée ou non). Si vous n'avez pas initialiser un champ de membre, alors que la partie de la mémoire spécifiquement pour le champ contient la valeur par défaut appropriée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X