web-dev-qa-db-fra.com

différence entre MessageFormat.format et String.format dans jdk1.5?

Quelle est la différence entre MessageFormat.format et String.format dans JDK 1.5?

59
kedar kamthe

En termes simples, la principale différence réside dans le format de la chaîne:

  1. MessageFormat.format() la chaîne de format accepte les positions d'argument (par exemple {0}, {1}). Exemple:

    "This is year {0}!"

    Le développeur n'a pas à se soucier des types d'arguments, car ils sont, le plus souvent, reconnus et formatés selon le Locale actuel.

  2. String.format() la chaîne de format accepte les spécificateurs de type d'argument (par exemple %d pour les nombres, %s pour les chaînes). Exemple:

    "This is year %d!"

    String.format() vous donne généralement beaucoup plus de contrôle sur la façon dont l'argument est affiché grâce aux nombreuses options que vous pouvez spécifier avec le spécificateur de type. Par exemple, la chaîne de format "%-6.2f" Spécifie d'afficher un nombre à virgule flottante aligné à gauche avec min. largeur 6 caractères et précision de 2 décimales.

Jetez un œil à javadoc des deux méthodes pour en savoir plus.

73
Adam Dyga

String.format est juste un raccourci vers Formatter , c'est un formateur "printf-style". De l'autre côté, MessageFormat utilise une convention de mise en forme différente, comme décrit dans la documentation liée.

Utilisez le premier "pour la justification et l'alignement de la mise en page, les formats courants pour les données numériques, de chaîne et de date/heure et la sortie spécifique aux paramètres régionaux" et le second "pour produire des messages concaténés de manière indépendante de la langue" .

21
lbalazscs