java string-formatting messageformat

java - diferencia entre MessageFormat.format y String.format en jdk1.5?



messageformat java 8 (2)

En pocas palabras, la principal diferencia está en la cadena de formato:

  1. MessageFormat.format() cadena de formato MessageFormat.format() acepta posiciones de argumento (por ejemplo, {0} , {1} ). Ejemplo:

    "This is year {0}!"

    El desarrollador no tiene que preocuparse por los tipos de argumentos, ya que, en la mayoría de los casos, son reconocidos y formados de acuerdo con la Locale actual.

  2. String.format() cadena de formato String.format() acepta especificadores de tipo de argumento (por ejemplo, %d para números, %s para cadenas). Ejemplo:

    "This is year %d!"

    String.format() generalmente le da mucho más control sobre cómo se muestra el argumento gracias a muchas opciones que puede especificar con el especificador de tipo. Por ejemplo, la cadena de formato "%-6.2f" especifica que se muestre un número de punto flotante alineado a la izquierda con min. Ancho 6 caracteres y precisión de 2 decimales.

Eche un vistazo al javadoc de ambos métodos para obtener más detalles.

¿Cuál es la diferencia entre MessageFormat.format y String.format en JDK 1.5?


String.format es solo un acceso directo al Formatter , este es un formateador "estilo printf". Por otro lado, MessageFormat utiliza una convención de formato diferente, como se describe en la documentación vinculada.

Use el primer "para la justificación y alineación del diseño, los formatos comunes para datos numéricos, de cadena y de fecha / hora, y la salida específica de la configuración regional" y el segundo "para producir mensajes concatenados de manera neutral para el idioma" .