作者:
逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言!
前言
在 Java 中,String.format
是一个强大的工具,用于创建格式化的字符串。它不仅让我们可以控制字符串的格式,还能提高代码的可读性和维护性。本文将深入探讨 String.format
的用法,包括基本语法、格式化占位符、常见应用场景及最佳实践。
但不建议在for循环中用它拼接字符串,因为它的执行效率,比使用+号拼接字符串,或者使用StringBuilder拼接字符串都要慢一些。
Java 的 `String.format`
不知道你有没有拼接过字符串,特别是那种有多个参数,字符串比较长的情况。
比如现在有个需求:要用get请求调用第三方接口,url后需要拼接多个参数。
以前我们的请求地址是这样拼接的:
String url = "http://susan.sc.cn?userName="+userName+"&age="+age+"&address="+address+"&sex="+sex+"&roledId="+roleId;
字符串使用+号拼接,非常容易出错。
后面优化了一下,改为使用StringBuilder拼接字符串:
StringBuilder urlBuilder = new StringBuilder("http://susan.sc.cn?");
urlBuilder.append("userName=")
.append(userName)
.append("&age=")
.append(age)
.append("&address=")
.append(address)
.append("&sex=")
.append(sex)
.append("&roledId=")
.append(roledId);
代码优化之后,稍微直观点。
但还是看起来比较别扭。
这时可以使用String.format方法优化:
String requestUrl = "http://susan.sc.cn?userName=%s&age=%s&address=%s&sex=%s&roledId=%s";
String url = String.format(requestUrl,userName,age,address,sex,roledId);
代码的可读性,一下子提升了很多。
我们平常可以使用String.format方法拼接url请求参数,日志打印等字符串。
1. 基本语法
String.format
方法
允许我们通过格式化字符串来生成最终的字符串输出。其基本语法如下:
String formattedString = String.format(String format, Object... args);
format
:格式化字符串,其中包含一个或多个格式占位符。args
:一个或多个要格式化的参数,与格式占位符对应。
2. 格式化占位符
格式化占位符用于定义参数在字符串中的表现形式。格式化占位符的基本结构是:
%[flags][width][.precision]conversion
以下是一些常用的格式化占位符:
%d
:格式化整数。%f
:格式化浮点数。%s
:格式化字符串。%x
:格式化十六进制整数。%t
:格式化日期和时间。
2.1 Flags(标志)
标志用于修改格式化输出的对齐方式和填充字符:
-
:左对齐,默认右对齐。+
:显示正负号。0
:用零填充,默认用空格填充。
String result = String.format("|%10d|%-10d|%010d|", 123, 123, 123);
// 输出: | 123|123 |0000000123|
2.2 Width(宽度)
宽度指定输出字段的最小宽度。如果实际值的宽度小于指定宽度,格式化输出将会填充空格(或其他字符)以满足宽度要求。
String result = String.format("|%5s|", "Java");
// 输出: | Java|
2.3 Precision(精度)
精度用于控制浮点数的小数位数或字符串的最大长度。
String result = String.format("|%.2f|", 123.456);
// 输出: |123.46|
String result2 = String.format("|%.5s|", "Hello, World!");
// 输出: |Hello|
2.4 Conversion(转换)
转换指定了如何将参数转换为字符串。常见的转换包括:
d
:十进制整数。f
:浮点数。s
:字符串。t
:日期/时间。
String result = String.format("Integer: %d, Float: %.2f, String: %s", 42, 3.14159, "Hello");
// 输出: Integer: 42, Float: 3.14, String: Hello
3. 常见应用场景
3.1 日志记录
使用 String.format
可以生成结构化的日志消息,使日志输出更清晰易读:
int errorCode = 404;
String errorMessage = "Not Found";
String log = String.format("Error Code: %d - %s", errorCode, errorMessage);
// 输出: Error Code: 404 - Not Found
3.2 表格数据
在生成表格格式的数据时,String.format
可以帮助对齐数据列:
String header = String.format("|%-15s|%10s|", "Name", "Score");
String row = String.format("|%-15s|%10d|", "Alice", 90);
String table = header + "\n" + row;
// 输出:
// |Name | Score|
// |Alice | 90|
4. 最佳实践
- 使用
String.format
来提高可读性:尽管String.format
功能强大,但避免过度复杂的格式化字符串,以免降低代码的可读性。 - 避免频繁调用:在性能敏感的代码中,频繁使用
String.format
可能影响性能,可以考虑使用StringBuilder
。 - 确保格式占位符与参数一致:不匹配的占位符和参数会导致
IllegalFormatException
异常。
5. 总结
String.format
是 Java 中强大而灵活的字符串格式化工具。通过理解其基本语法和常用格式化占位符,可以在代码中生成清晰、易读的格式化字符串。掌握这些技巧不仅能提升代码的可维护性,还能使输出结果更符合需求。