Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

Java Quiz #19

Que diriez-vous du code suivant ?

public class TiensUneURL {
    public static void main(String... args) {
        System.out.println("Une petite curiosité...");
        http://olivier.croisier.free.fr/blog/index.php?2008/10/19/93-java-quiz-19   // L'URL de ce billet
        System.out.println("Qu'en dit le compilateur ?");
    }
}

(essayez de trouver la réponse sans coller le code dans un IDE...)

Réponse :
En fait, ce code compile sans aucun problème, et son exécution affiche :

Une petite curiosité...
Qu'en dit le compilateur ?

Pourquoi ? Parce que le compilateur interprète le // et tout ce qui suit comme un commentaire, et le http: comme... un label !
Au passage, ceux d'entre vous qui ont copié cette classe dans Eclipse auront remarqué que celui-ci ajoute un petit avertissement sur http qui dit : "Le label http n'est jamais référencé explicitement". Ce qui montre bien qu'il s'agit d'un label. Même l'outil de coloration syntaxique de ce blog le montre (la raison pour laquelle le bout de code n'a pas été coloré dans la question) :

  1. public class TiensUneURL {
  2. public static void main(String... args) {
  3. System.out.println("Une petite curiosité...");
  4. http://olivier.croisier.free.fr/blog/index.php?2008/10/19/93-java-quiz-19 // L'URL de ce billet
  5. System.out.println("Qu'en dit le compilateur ?");
  6. }
  7. }

Commentaires

1. Le mercredi 29 octobre 2008, 15:03 par dmenut

Bonjour !

Voici un petit retour du monde .Net sur ce quizz :)

Modulo la modification des System.out.println en System.Console.WriteLine, ce code compile. Il y a bien un warning mais le programme s'execute très bien, comme s'il "sautait" cette ligne. Voici le warning : "This label has not been referenced" En effet, "http:" est considéré comme un label sur lequel on peut faire un goto (hé oui, en C# le goto tant décrié existe encore). Le reste de la ligne est évidemment un commentaire. Le warning signale juste qu'on a un label sur lequel faire un goto mais aucun goto correspondant.

Voila ! Merci Olivier pour ces infos et quizz :)

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.