[LGJ] Tableau = objet?

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LGJ] Tableau = objet?

Message  ljsouli le Jeu 07 Juin 2012, 21:44

Bonjour,
Je me demande dans le concret si un tableau est un objet?
Je sais que niveau fonctionnement c'est un type référence avec ce qui s'en suit niveau allocation mémoire.
Mais je me demande si cela fonctionne proprement dit comme un objet...
Et si c'est reconnu proprement dit comme un objet au sein du même du langage?
En illustrant un peu mon raisonnement, est-il possible de créer une liste de tableaux? (en sachant qu'il existe que des listes d'objets)
Merci.

ljsouli

Nombre de messages : 5
Prénom : Solaiman
Date d'inscription : 17/04/2012

Revenir en haut Aller en bas

Re: [LGJ] Tableau = objet?

Message  nvs le Jeu 07 Juin 2012, 22:12

ljsouli a écrit:Je me demande dans le concret si un tableau est un objet?
oui.





clown

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LGJ] Tableau = objet?

Message  ljsouli le Jeu 07 Juin 2012, 22:35

Et donc comment un tableau respecte cette propriété qu'il me semble avoir vu en cours :" Un objet est une instance de classe" ?
Un tableau serait donc une instance de quelle classe?

ljsouli

Nombre de messages : 5
Prénom : Solaiman
Date d'inscription : 17/04/2012

Revenir en haut Aller en bas

Re: [LGJ] Tableau = objet?

Message  nvs le Jeu 07 Juin 2012, 23:11

ljsouli a écrit:Un tableau serait donc une instance de quelle classe?
de la classe tableau de X, où X est le type des éléments du tableau.

par exemple, le code :
Code:
    public static void main(String[] args) {

        String msg = "brol";
        System.out.println("msg.getClass() : " + msg.getClass());
        if (msg instanceof String) {
            System.out.println("msg est une String");
        } else {
            System.out.println("c'est la merde...");
        }

        System.out.println("");

        int[] ti1 = {1, 2, 3};
        System.out.println("ti1.getClass() : " + ti1.getClass());
        if (ti1 instanceof int[]) {
            System.out.println("ti1 est un int[]");
        } else {
            System.out.println("c'est la merde...");
        }
        System.out.println("ti1.toString() : " + ti1.toString());
        System.out.println("ti1.hashCode() : " + ti1.hashCode());

        System.out.println("");

        double[] td1 = {1, 2, 3};
        System.out.println("td1.getClass() : " + td1.getClass());
        if (td1 instanceof double[]) {
            System.out.println("td1 est un double[]");
        } else {
            System.out.println("c'est la merde...");
        }

        System.out.println("");

        System.out.println("args.getClass() : " + args.getClass());
        if (args instanceof String[]) {
            System.out.println("args est un String[]");
        } else {
            System.out.println("c'est la merde...");
        }
    }
donne en sortie :
Code:
msg.getClass() : class java.lang.String
msg est une String

ti1.getClass() : class [I
ti1 est un int[]
ti1.toString() : [I@cf2c80
ti1.hashCode() : 13577344

td1.getClass() : class [D
td1 est un double[]

args.getClass() : class [Ljava.lang.String;
args est un String[]







bounce

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [LGJ] Tableau = objet?

Message  FûT le Ven 08 Juin 2012, 19:29

Pour la petite note; de manière plus générique on peut aussi tester un objet comme étant un tableau <*?> de la manière suivante :
Code:
object.getClass().isArray();

FûT

Nombre de messages : 118
Age : 26
Prénom : Raphaël
Statut : Etudiant en 3ième indu
Date d'inscription : 10/10/2010

http://ittricks.be

Revenir en haut Aller en bas

Re: [LGJ] Tableau = objet?

Message  ljsouli le Sam 09 Juin 2012, 17:37

Ok, merci à vous! =)

ljsouli

Nombre de messages : 5
Prénom : Solaiman
Date d'inscription : 17/04/2012

Revenir en haut Aller en bas

Re: [LGJ] Tableau = objet?

Message  FûT le Dim 10 Juin 2012, 15:54

Petite précision venant de StackOverFlow concernant la différence entre instanceof et isArray( ) ! Comme j'suis tombé par hasard dessus ! cheers
In general, use the instanceof operator to test whether an object is an array.

At the JVM level, the instanceof operator translates to a specific "instanceof" byte code, which is highly optimized in most JVM implementations.

The reflective approach (getClass().isArray()) is compiled to two separate "invokevirtual" instructions. The more generic optimizations applied by the JVM to these may not be as fast as the hand-tuned optimizations inherent in the "instanceof" instruction.

There are two special cases: null references and references to primitive arrays.

A null reference will cause instanceof to result false, while the isArray throws a NullPointerException.

Applied to a primitive array, the instanceof results false, but the isArray returns true.

Source: http://stackoverflow.com/questions/219881/java-array-reflection-isarray-vs-instanceof

FûT

Nombre de messages : 118
Age : 26
Prénom : Raphaël
Statut : Etudiant en 3ième indu
Date d'inscription : 10/10/2010

http://ittricks.be

Revenir en haut Aller en bas

Re: [LGJ] Tableau = objet?

Message  Contenu sponsorisé Aujourd'hui à 10:48


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum