Quelle est exactement la différence technique entre console.writeline
et System.out.println
? Je sais que cela System.out.println
écrit sur la sortie standard mais n'est-ce pas la même chose que la console?
Je ne comprends pas entièrement la documentation pour console.writeline
.
Réponses:
Voici les principales différences entre l'utilisation de
System.out
/.err
/.in
etSystem.console()
:System.console()
renvoie null si votre application n'est pas exécutée dans un terminal ( bien que vous puissiez gérer cela dans votre application )System.console()
fournit des méthodes pour lire le mot de passe sans faire écho aux caractèresSystem.out
etSystem.err
utilisez le codage de plate-forme par défaut, tandis que lesConsole
méthodes de sortie de classe utilisent le codage de consoleCe dernier comportement peut ne pas être immédiatement évident, mais un code comme celui-ci peut démontrer la différence:
Sur mon Windows XP qui a un encodage système de windows-1252 et un encodage de console par défaut d'IBM850, ce code écrira:
Notez que ce comportement dépend de l'encodage de la console défini sur un encodage différent de l'encodage système. Il s'agit du comportement par défaut sur Windows pour un tas de raisons historiques.
la source
Ils sont essentiellement les mêmes, si votre programme est exécuté à partir d'une invite interactive et que vous n'avez pas redirigé stdin ou stdout:
résulte en:
La raison
Console
existe est de fournir des fonctionnalités utiles dans le cas spécifique où vous êtes exécuté à partir d'une ligne de commande interactive:Console
les mettre en file d'attente bien, alors que si vous avez utilisé System.in/out, toutes les invites apparaîtront simultanément).Notez ci-dessus que la redirection même de l' un des flux entraîne un
System.console()
retournull
; une autre irritation est qu'il n'y a souvent aucunConsole
objet disponible lorsqu'il est généré par un autre programme tel qu'Eclipse ou Maven.la source
Premièrement, je crains que votre question contienne une petite erreur. Il n'y a pas d'écriture de méthode dans la classe Console. Au lieu de cela, la classe Console fournit la méthode writer () qui renvoie PrintWriter. Ce graveur d'impression a println ().
Maintenant, quelle est la différence entre
et
Si vous exécutez votre application à partir de la ligne de commande, je pense qu'il n'y a aucune différence. Mais si la console n'est pas disponible, System.console () renvoie null alors que System.out existe toujours. Cela peut se produire si vous appelez votre application et effectuez une redirection de STDOUT vers un fichier.
Voici un exemple que je viens de mettre en œuvre.
Lorsque j'ai exécuté l'application à partir de l'invite de commande, j'ai obtenu ce qui suit:
mais quand j'ai redirigé le STDOUT vers un fichier ...
La ligne 8 est
console.writer().println()
.Voici le contenu de / tmp / test
J'espère que mes explications vous aideront.
la source
Il n'y a pas
Console.writeline
de Java. C'est dans .NET.La console et la sortie standard ne sont pas les mêmes. Si vous lisez la page Javadoc que vous avez mentionnée , vous verrez qu'une application ne peut avoir accès à une console que si elle est appelée à partir de la ligne de commande et que la sortie n'est pas redirigée comme ceci
D'autres cas de ce genre sont couverts dans la réponse de SimonJ, bien qu'il ait manqué le fait qu'il n'y en a pas
Console.writeline
.la source