jsva基础---String.format()与MessageFormat.format()

基本使用:

 System.out.println(String.format("字符串:%s","这是一串字符"));
        System.out.println(String.format("字符:%c",'c'));
        System.out.println(String.format("布尔:%b",true));
        System.out.println(String.format("整数十进制:%d",99));
        System.out.println(String.format("整数十六进制:%x",10));
        System.out.println(String.format("整数八进制:%o",10));
        System.out.println(String.format("浮点类型:%f",3.1415));
        System.out.println(String.format("十六进制浮点类型:%a",3.1415));
        System.out.println(String.format("指数类型:%e",Math.pow(2, 10)));
        System.out.println(String.format("通用浮点类型:%g",3.1415));
        System.out.println(String.format("散列表:%h","cc"));
        System.out.println(String.format("百分比:%d%%",99));
        System.out.printf(String.format("换行符"+"%n"));
        System.out.println(String.format("日期类型:%tF",new Date()));
        System.out.println(String.format("日期类型:%tc",new Date()));
        System.out.println(String.format("日期类型:%tD",new Date()));
        System.out.println(String.format("日期类型:%tr",new Date()));
        System.out.println(String.format("日期类型:%tT",new Date()));
        System.out.println(String.format("日期类型:%tR",new Date()));

结果:
在这里插入图片描述
时间转换符:
在这里插入图片描述
通用转换符:
在这里插入图片描述

MessageFormat:

public class MessageFm {
    public static void main(String[] args) {
        System.out.println(MessageFormat.format("这是一首{0}小{1}", "简单的", "情歌"));
    }
}

结果:
在这里插入图片描述
注意:
MessageFormat格式化数字和日期有坑,就是超过三位数的数字,格式化之后会自动变成国外数字的记法(百位之后每三位数字用逗号分隔),比如9999会变为9,999之类的。由于这个原因,导致我给银行出修数SQL的时候没有检查出SQL中数字格式化存在的问题,SQL中的数字是不能使用逗号的,否则会被当成语句内逗号分隔符。

public class MessageFm {
    public static void main(String[] args) {
        System.out.println(MessageFormat.format("只要{0}", 99999));
    }
}

结果:
在这里插入图片描述
两者的性能比较:

MeesageFormat由于是一个在先分析的指定位置插入相应的值,性能要好于采用正则表达式查找占位符的String.format方法。Message Format > String:

  • String.format内部的实现是一个Formatter,使用了正则表达式来查找占位数据的。
  • MessageFormat的原理简单来说就是遍历第一个字符,维护一个{}数组,并且记录了{}的各个位置,各个位置还对应着index(参数的下标)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值