La bonne réponse est :

Non : charData est un objet de type String et 3.14159265 (sans les guillemets) est un litéral primitif de type double. Le méthodes d'encodage au niveau des bits sont totalement différentes, and une simple affectation ne fonctionnera pas pour effectuer la conversion.

Comment fonctionne le programme

Examinons le processus de conversion des caractères en double:

Première étape : Les caractères "3.14159265" sont contenus dans un objet appelé charData, qui est de type String. Un objet n'est pas un type primitif; un object est une "parcelle" de mémoire qui contient des données et peut effectuer certaines opérations sur ses données (Les types primitives ne sont que des données; les données ne peuvent etre manipulées qu'à l'extérieur du type primitif).
 

    final String charData = "3.14159265";
    Double tempDouble;
    double value;

    tempDouble = Double.valueOf( charData ) ;
    value      = tempDouble.doubleValue() ;

Deuxième étape: La méthode valueOf de la wrapper classe Double crée un objet en utilisant les caractères de la chaine. C'est un objet de type  Double. La variable tempDouble est utilisée pour cet objet.
 
    final String charData = "3.14159265";
    Double tempDouble;
    double value;

    tempDouble = Double.valueOf( charData ) ;
    value      = tempDouble.doubleValue() ;

Finalement: La méthode doubleValue() de l'objet tempDouble est utilisée pour créer le type primitif double contenant la valeur que nous voulions.
 

    final String charData = "3.14159265";
    Double tempDouble;
    double value;

    tempDouble = Double.valueOf( charData ) ;
    value      = tempDouble.doubleValue() ;

L'objet Double contient une valeur, et peut manipuler cette valeur avec différentes méthodes. L'une de ces méthodes est doubleValue(), qui retourne une valeur de type primitif double correspondant à la valeur qu'il contient.

(Si tout ce baratin à propos des objets vous passe un peu au-dessus de la tête, ne vous inquiétez pas. Continuez à lire pour essayer de comprendre l'idée générale. La notion d'objet sera expliquée bien plus en détail dans les chapitres suivants.)

QUESTION 3:

Le programme fonctionnerait-il si la déclaration de la variable charData était la suivante :
    final String charData = "6.67E-11";
Vous y prendra-t-on une deuxième fois :-)