The MessageFormat
class in java.text
package is used to produce concatenated messages that include dynamic values, such as numbers, dates, or strings, in a template format. Unlike string concatenation, MessageFormat
is locale-sensitive and cleaner for formatting complex messages with placeholders.
Key Features:
- Supports indexed placeholders like
{0}
,{1}
, etc. - Can format numbers, dates, and strings.
- Localized formatting.
- Reusable format templates.
Common Used Methods

Simple Program
import java.text.MessageFormat; public class SimpleMessageFormatExample { public static void main(String[] args) { String pattern = "Hello {0}, you have {1} new messages."; String formattedMessage = MessageFormat.format(pattern, "Mahesh", 5); System.out.println(formattedMessage); } } /* Hello Mahesh, you have 5 new messages. */
Problem Statement
Paani and Mahesh are building a Bank Notification System. Whenever a transaction occurs, the system should send a personalized notification to the customer with the following details:
- Customer Name
- Transaction Amount
- Transaction Type (Credit/Debit)
- Current Balance
Use the MessageFormat
class to create such a dynamic message template.
import java.text.MessageFormat; public class BankNotificationSystem { public static void main(String[] args) { // Pattern with placeholders String pattern = "Dear {0}, your account has been {1} with ₹{2,number,#,##0.00}. " + "Your current balance is ₹{3,number,#,##0.00}."; // Sample data for multiple customers Object[][] transactions = { {"Mahesh", "credited", 2500.75, 10500.50}, {"LotusJavaPrince", "debited", 1200.00, 8800.50}, {"Paani", "credited", 7000.00, 15800.75} }; System.out.println("----- Bank Notifications -----"); for (Object[] transaction : transactions) { String message = MessageFormat.format(pattern, transaction); System.out.println(message); } } } /* ----- Bank Notifications ----- Dear Mahesh, your account has been credited with ₹2,500.75. Your current balance is ₹10,500.50. Dear LotusJavaPrince, your account has been debited with ₹1,200.00. Your current balance is ₹8,800.50. Dear Paani, your account has been credited with ₹7,000.00. Your current balance is ₹15,800.75. */
The MessageFormat
class in Java offers a clean and structured way to build messages with dynamic values, making it ideal for logs, notifications, and multi-language applications.MessageFormat
is a vital class when building user-friendly messages with variable data, especially in enterprise and internationalized applications.