Format可能存在的坑

import java.text.MessageFormat;


public class TestFormat {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = MessageFormat.format("/status={0}&app={1}&version={2}", new Object[] { 123, 1234, 12345 });
        
        System.out.println(str);
String str = MessageFormat.format("/status={0}&app={1}&version={2}", new Object[] { "123", "1234", "12345" });
 System.out.println(str2); } }

你觉得这两个产生的结果是不是一样?其实不一样!!

/status=123&app=1,234&version=12,345
/status=123&app=1234&version=12345

原因:查看源码,MessageFormat.format在底层会判断传入参数的类型,如果是数字类型,会format成*,***,***格式,如果是字符串就直接替换。

原文地址:https://www.cnblogs.com/huhuuu/p/5171480.html