聊聊String.format()方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊聊String.format()方法相关的知识,希望对你有一定的参考价值。

参考技术A

先说说使用String.format方法来输出字符串的优势,我们可以回想一下我们刚开始学习Java时,对于不确定具体内容的参数,往往是使用字符串拼接的方式来进行输出的,比如说像下面这种:

我们可以看到,使用上面这种方式我们确实可以完成打印的需求,但是字符串拼接过程中其实是创建了一些我们不需要用到的字符串对象的。所以,面对这种不确定参数内容的场景,String类提供format的格式化方法来帮助我们解决这个问题。

format方法的核心在于对占位符的使用,我们可以预先定义好一个字符串的模板,有了模板之后我们只需要提供参数就行,底层会帮助我们把参数替换到对应的占位符中。我们以上面的案例为例,做一个小优化:
定义的模板字符串为: %s今年%d岁了,收到了%f块零花钱 ,其中第一个 %s 表示会将传入的第一个字符串参数替换掉 %s 这个占位符,对于 %d 和 %f 也是一样,分别表示整数类型和浮点类型的占位符。

从输出结果看,我们可以发现和之前使用字符串拼接的效果一模一样,但是使用format方法却有更多的好处:
(1) 参数更加明确 ,我们可以更加方便的找到输出的元素(在多参数的输出上会体现的更加明显)
(2) 降低了产生的无用内存对象

下面我们将对format方法中常用的占位符进行介绍:

其中我们用的比较多的,一般是字符串、整数、浮点、日期相关的占位符多一些。

我们以上面的占位符为例做一个小例子:

我们使用这些特殊的占位符来做一个小测试:

我们在常用占位符的介绍中提到了可以通过 %tx 的方式来定义日期占位符,其中 x 就需要我们再根据需要填入对应的日期格式。

同样的,我们根据上面提供的日期占位符来做一个简单的例子:
我们可以看到,我们定义的模板字符串为: today is %1$tY-%1$tm-%1$td ,理论上我们需要填入三个参数,但实际上我们只提供了1个日期类,原因是当1个参数会在模板字符串中多次使用时,我们可以使用 数字$ 的方式来对指定位置的参数进行替换。比如说 1$ 表示的就是这里将使用第1个参数进行替换。
同时,还需要注意,我们的索引占位符 数字$ 是需要写在%之后的,否则会识别错误。

至此,对于String.format方法我们就介绍到这里。

以上是关于聊聊String.format()方法的主要内容,如果未能解决你的问题,请参考以下文章

String.format 方法小数问题

String.format()方法使用说明

string.format()的用法?

String.format(String format, Object... args)方法详解

String的format方法--应用

string.format的参数