Formatting Messages, Dates, Times, and Numbers in Java

Master message formatting, MessageFormat class, formatting dates, times, numbers, currency, percentages, and locale-specific formatting for the OCP 21 exam.

Table of Contents

1. Message Formatting

The MessageFormat class provides a way to produce concatenated messages with placeholders.

1.1 Using MessageFormat

Example:
import java.text.MessageFormat;

// Simple formatting
String pattern = "Hello {0}, you have {1} messages";
String message = MessageFormat.format(pattern, "Alice", 5);
// "Hello Alice, you have 5 messages"

// With locale
MessageFormat mf = new MessageFormat(pattern, Locale.FRANCE);
String messageFR = mf.format(new Object[]{"Alice", 5});

// Format with different types
String pattern2 = "Name: {0}, Age: {1}, Salary: {2,number,currency}";
String result = MessageFormat.format(pattern2, "Bob", 30, 50000);

2. Date Formatting

2.1 DateFormat and SimpleDateFormat

Example:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

Date date = new Date();

// Using DateFormat
DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, Locale.US);
String formatted = df.format(date);

// Using SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formatted2 = sdf.format(date);

// With locale
SimpleDateFormat sdfFR = new SimpleDateFormat("dd MMMM yyyy", Locale.FRANCE);
String formattedFR = sdfFR.format(date);

3. Time Formatting

3.1 Formatting Time

Example:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

Date date = new Date();

// Time formatting
DateFormat tf = DateFormat.getTimeInstance(DateFormat.FULL, Locale.US);
String time = tf.format(date);

// Date and time
DateFormat dtf = DateFormat.getDateTimeInstance(
    DateFormat.FULL, DateFormat.FULL, Locale.US);
String dateTime = dtf.format(date);

// Custom format
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String time2 = sdf.format(date);

4. Number Formatting

4.1 NumberFormat

Example:
import java.text.NumberFormat;
import java.util.Locale;

double number = 1234567.89;

// Number formatting
NumberFormat nf = NumberFormat.getInstance(Locale.US);
String formatted = nf.format(number);  // "1,234,567.89"

NumberFormat nfFR = NumberFormat.getInstance(Locale.FRANCE);
String formattedFR = nfFR.format(number);  // "1 234 567,89"

// Integer formatting
NumberFormat intFormat = NumberFormat.getIntegerInstance(Locale.US);
String intFormatted = intFormat.format(1234567);  // "1,234,567"

5. Currency Formatting

5.1 Currency and Percentage Formatting

Example:
import java.text.NumberFormat;
import java.util.Locale;

double amount = 1234.56;
double percentage = 0.15;

// Currency formatting
NumberFormat currency = NumberFormat.getCurrencyInstance(Locale.US);
String currencyFormatted = currency.format(amount);  // "$1,234.56"

NumberFormat currencyFR = NumberFormat.getCurrencyInstance(Locale.FRANCE);
String currencyFRFormatted = currencyFR.format(amount);  // "1 234,56 €"

// Percentage formatting
NumberFormat percent = NumberFormat.getPercentInstance(Locale.US);
String percentFormatted = percent.format(percentage);  // "15%"

NumberFormat percentFR = NumberFormat.getPercentInstance(Locale.FRANCE);
String percentFRFormatted = percentFR.format(percentage);  // "15 %"

6. Exam Key Points

Critical Concepts for OCP 21 Exam:

  • MessageFormat: Format messages with placeholders
  • Placeholders: {0}, {1}, etc. for arguments
  • DateFormat: Format dates and times
  • SimpleDateFormat: Custom date/time formatting
  • NumberFormat: Format numbers, currency, percentages
  • getCurrencyInstance(): Format as currency
  • getPercentInstance(): Format as percentage
  • getInstance(): Format as number
  • Locale-specific: Formatting varies by locale
  • parse(): Parse formatted strings back to objects

Post a Comment

0 Comments