2011-08-10 2 views
2

Ce codeJava - Valeur du tableau, adresse mémoire ou?

public static void main(String [] args){ 
    int c[] ={10,21,34,36,90,33,44,5}; 
    int tot = 0; 
    for(int i:c){ 
     System.out.println(c); 
    } 
} 

Imprime

[[email protected] 
[[email protected] 
[[email protected] 
[[email protected] 
[[email protected] 
[[email protected] 
[[email protected] 
[[email protected] 

Je sais que je suis censé imprimer la variable int, mais je suis curieux de savoir ce que cela signifie. Merci

+2

N'utilisez-vous pas System.out.println (i); '(print i, not c)? – Arjan

+1

Je le sais. Je demande pourquoi "c" donne cette sortie. – Mob

Répondre

8

Vous imprimez la représentation interne de c. Essentiellement [[email protected] se décompose en deux choses importantes. Tout d'abord, le [ indique que vous imprimez un tableau. Deuxièmement, le I indique qu'il s'agit d'un nombre entier. Par conséquent, vous imprimez un tableau d'entiers! Essayez de remplacer le tableau d'entiers par un tableau de chaînes et regardez le I être remplacé en conséquence. From this page:

Le nom de la classe d'un tableau a un carré ouvert pour support chaque dimension plus une lettre ou une chaîne représentant le type du tableau. Pour l'exemple , le nom de classe d'un tableau d'ints est "[I". Le nom de classe pour un tableau d'octets tridimensionnel est "[[[B". Le nom de classe d'un tableau bidimensionnel d'objets est "[[Ljava.lang.Object". Les détails complets de cette convention de dénomination pour les classes de tableaux sont donnés au chapitre 6, "Le fichier de classe Java", du chapitre .

+0

Plus d'informations dans la section "Signatures de type" de la [Spécification JNI] (http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/types.html). – vanza