Double/Double
Résolu
bibabobu
Messages postés
12
Statut
Membre
-
bibabobu Messages postés 12 Statut Membre -
bibabobu Messages postés 12 Statut Membre -
Bonjour,
Je me pose quelques questions sur la provenance des types primitifs et comment fonctionnent les wrappers classes Double, Integer...
En outre, j'aimerais que l'on m'explique pourquoi :
car à partir de ma connaissance des objets, je comprends:
Merci d'avance pour les réponses!
Je me pose quelques questions sur la provenance des types primitifs et comment fonctionnent les wrappers classes Double, Integer...
En outre, j'aimerais que l'on m'explique pourquoi :
double d = new Double(12.2586); // est équivalent à double d = 12.2586;
car à partir de ma connaissance des objets, je comprends:
Double d=new Double(12.2586) mais pas double d=new Double(65465);
Merci d'avance pour les réponses!
A voir également:
- Double/Double
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
- Double boot - Guide
4 réponses
Bonjour,
Je ne suis pas forcement très connaisseur (surtout en java) mais voici mon opinion:
double d = new Double(12.2586);
n'est pas équivalent à
double d = 12.2586;
Apparemment c'est une "Unboxing conversion"
Je n'ai pas trouvé si le compilateur faisait effectivement cette conversion de manière implicite donc je ne peux être sûr à 100% que c'est bien elle qui est appliquée ici mais ça expliquerait assez bien ce qui se produit ici.
Bien à vous,
M.
Je ne suis pas forcement très connaisseur (surtout en java) mais voici mon opinion:
double d = new Double(12.2586);
n'est pas équivalent à
double d = 12.2586;
double d = 12.2586;je pense que tout le monde voit...
double d = new Double(12.2586);Ce code construit une instance la classe Double, puis il y a une sorte de cast implicite pour convertir le Double en double puis l'instance de Double est détruite car elle n'est référencée par aucune variable. (donc a priori beaucoup de code pour faire exactement la même chose qu'au dessus)
Apparemment c'est une "Unboxing conversion"
Je n'ai pas trouvé si le compilateur faisait effectivement cette conversion de manière implicite donc je ne peux être sûr à 100% que c'est bien elle qui est appliquée ici mais ça expliquerait assez bien ce qui se produit ici.
Bien à vous,
M.
Gare au lézard primitif (ne lui dîtes pas il ne sera pas ravi de ce qualificatif !) !!!
double d = new Double(12.2586); // est équivalent à double d = 12.2586;
Absolument pas, il y a une erreur, il faut écrire:
double d = new Double(12.2586); // est équivalent à double d = 12.2586;
Absolument pas, il y a une erreur, il faut écrire:
double* d = new double(12.2586);Bonne réflexion.
Bonne réflexion -> ah oui, tu m'étonnes.
D'après ma connaissance du C, le wildcard ou l'astérix (ou l'obélix pour ceux qui suivent) indique que la variable est de type pointeur sur double.
Cela dit, d'après ma connaissance en Java, je n'ai jamais encore vu une telle déclaration de variable.
Lorsque tu écris
cela veut dire qu'il existe un constructeur double qui prendrait en paramètre un double. En plus, il n'existe pas de classe double mais seulement une classe Double.
Cependant, il existe des modifications suivant les versions de java et apparemment, après le java 1.4, la classe Double a changé.
Personnellement, je consulte l'API java 1.5.
Au fait, pourrais-tu m'expliquer très vite ton code?
Merci d'avance.
D'après ma connaissance du C, le wildcard ou l'astérix (ou l'obélix pour ceux qui suivent) indique que la variable est de type pointeur sur double.
Cela dit, d'après ma connaissance en Java, je n'ai jamais encore vu une telle déclaration de variable.
Lorsque tu écris
double* d = new double(12.2586);
cela veut dire qu'il existe un constructeur double qui prendrait en paramètre un double. En plus, il n'existe pas de classe double mais seulement une classe Double.
Cependant, il existe des modifications suivant les versions de java et apparemment, après le java 1.4, la classe Double a changé.
Personnellement, je consulte l'API java 1.5.
Au fait, pourrais-tu m'expliquer très vite ton code?
Merci d'avance.
Bonjour,
Attention Bibabobu, il s'agit d'astérisque et non d'astérix, bien que ce dernier existe ^^.
Sinon, n'oublie jamais de préciser le langage dont tu parles. Cela change beaucoup d'un langage à l'autre.
Bon j'imagine que tu parles de Java, du coup.
Je confirme les propos de Mahmah.
double d = new Double(12.2586); // est équivalent à double d = 12.2586;
Oui, c'est vrai à partir de J2SE 5.0. Normalement, il faudrait écrire :
Double wrap = new Double(12.2586);
double d = wrap.doubleValue();
C'est ce qu'on appelle l'unboxing. Il y a aussi l'autoboxing (c'est le contraire grosso modo). Cette opération est fait à la compilation (si >= J2SE 5.0).
Cdlt,
Attention Bibabobu, il s'agit d'astérisque et non d'astérix, bien que ce dernier existe ^^.
Sinon, n'oublie jamais de préciser le langage dont tu parles. Cela change beaucoup d'un langage à l'autre.
Bon j'imagine que tu parles de Java, du coup.
Je confirme les propos de Mahmah.
double d = new Double(12.2586); // est équivalent à double d = 12.2586;
Oui, c'est vrai à partir de J2SE 5.0. Normalement, il faudrait écrire :
Double wrap = new Double(12.2586);
double d = wrap.doubleValue();
C'est ce qu'on appelle l'unboxing. Il y a aussi l'autoboxing (c'est le contraire grosso modo). Cette opération est fait à la compilation (si >= J2SE 5.0).
Cdlt,
Qué miseria! Astérisque biensûr! Merci de signaler l'erreur. En plus, je suis moi-même trop souvent exaspérée dvt les forums informatiques où je trouve des énormes erreurs d'orthographe.
Sinon, pour le langage, pourquoi ne l'ai-je donc pas précisé?!? Dieu merci, fiddy est encore là pour me corriger.
Cdlt
Sinon, pour le langage, pourquoi ne l'ai-je donc pas précisé?!? Dieu merci, fiddy est encore là pour me corriger.
Cdlt
bonne soirée.