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请求参数,日志打印等字符串。但不建议在for循环中用它拼接字符串,因为它的执行效率,比使用+号拼接字符串,或者使用StringBuilder拼接字符串都要慢一些。

二、String.format() 使用介绍

String.format()函数相当于将括号内的量,按照自己的想要的格式拼接成一个字符串,然后输出。作用效果有点像C语言中的printf()函数。

常用的转换符:
在这里插入图片描述
1、通用浮点数:

比%f,%a长度更短的一种格式输出,显示6位有效数字,而且会进行四舍五入。

2、散列码:

不必用冗长的线性搜索技术来查找一个键,而是用一个特殊的值,名为“散列码”。散列码可以获取对象中的信息,然后将其转换成那个对象“相对唯一”的整数(int)。所有对象都有一个散列码。

代码测试:

public class StringFormatDemo {
    public static void main(String[] args)
    {
        //%s %c
        String str;
        str = String.format("Hello %s%c","world",'!');
        System.out.println(str);
        //%b
        str = String.format("%b", 10>3);
        System.out.println(str);
        str = String.format("%b", 2>=3);
        System.out.println(str);
        //%d %x %o
        str = String.format("十进制:%d", 10);
        System.out.println(str);
        str = String.format("十六进制:%x", 10);
        System.out.println(str);
        str = String.format("八进制:%o", 10);
        System.out.println(str);
        //%f %a %g %e
        str = String.format("浮点数:%f", 3.14159);
        System.out.println(str);
        str = String.format("十六进制浮点数:%a", 3.14159);
        System.out.println(str);
        str = String.format("通用浮点类型:%g", 3.1415926);
        System.out.println(str);
        str = String.format("指数形式:%e", 3.14159);
        System.out.println(str);
        //%h %% %n
        str = String.format("散列码:%h", "123456");
        System.out.println(str);
        str = String.format("百分之九十:%d%%", 90);
        System.out.println(str);
        str = String.format("测试到此结束!%n");
        System.out.println(str);

    }
}

返回结果:

Hello world!
true
false
十进制:10
十六进制:a
八进制:12
浮点数:3.141590
十六进制浮点数:0x1.921f9f01b866ep1
通用浮点类型:3.14159
指数形式:3.141590e+00
散列码:56760663
百分之九十:90%
测试到此结束!



常用标识:

标识说明
+使用正数表示正号,负数加不加无所谓,都可以表示出负号
-左对齐,不够位数的地方补空格
0在数字不够的地方补0
空格在位数不够的地方补上空格
,对数字分组,三位一隔,只可以用于十进制
(使用括号将去掉负号包含进来
#让十六进制的数字加上ox,八进制的数字加上o,辅助%x和%o使用,相当于一种数字进制的补充说明提示
<格式前一个转换符的参数

代码测试:

public class StringFormatDemo02 {

    public static void main(String[] args)
    {
        //+号的用法
        String str;
        str = String.format("数字的正负表示:%+d %d %+d %d",8,8,-8,-8);
        System.out.println(str);
        //-的用法
        str = String.format("左对齐:%-6d",8);
        System.out.println(str);
        //0的用法
        str = String.format("缺位补零:%06d",8);
        System.out.println(str);
        //' '空格的用法
        str = String.format("缺位补空格:% 6d",8);
        System.out.println(str);
        str = String.format("缺位补空格:% 6d",-8);
        System.out.println(str);
        //,的用法
        str = String.format("数字分组:%,d",123456789);
        System.out.println(str);
        //(的用法
        str = String.format("括号用法:%(d",-8888);
        System.out.println(str);
        str = String.format("括号用法:%(d",8888);
        System.out.println(str);
        //#的用法
        str = String.format("#括号用法(十六进制):%#x",12);
        System.out.println(str);
        str = String.format("#括号用法(八进制):%#o",12);
        System.out.println(str);
        //<的用法
        str = String.format("<括号用法:%f %<3.1f",3.14,3.2);
        //"%<3.1f"作用的对象是前一个"%f"所作用的对象
        System.out.println(str);
    }

}

返回结果:

数字的正负表示:+8 8 -8 -8
左对齐:8     
缺位补零:000008
缺位补空格:     8
缺位补空格:    -8
数字分组:123,456,789
括号用法:(8888)
括号用法:8888
#括号用法(十六进制)0xc
#括号用法(八进制)014
<括号用法:3.140000 3.1

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下方式: ``` String str1 = "hello"; String str2 = "world"; String result = String.format("%s:%s", str1, str2); System.out.println(result); ``` 输出结果为: ``` hello:world ``` ### 回答2: 使用String.format方法以冒号拼接两个字符串,需要使用"%s:%s"作为格式化字符串,其中"%s"表示字符串类型。 以下是代码示例: ```java String str1 = "Hello"; String str2 = "World"; String result = String.format("%s:%s", str1, str2); System.out.println(result); ``` 上述代码中,我们首先定义了两个字符串str1和str2,然后使用String.format方法将它们以冒号拼接起来。格式化字符串"%s:%s"中的两个"%s"分别表示要格式化的字符串类型。通过将str1和str2传递给String.format,我们将得到"Hello:World"作为结果。最后,通过System.out.println打印结果。 运行以上代码,输出结果为: ``` Hello:World ``` 这样,我们就成功使用String.format以冒号拼接两个字符串。 ### 回答3: 可以使用String.format()方法来以冒号拼接两个字符串。具体实现如下: 首先,我们需要定义两个字符串变量,假设为str1和str2。 然后,使用String.format()方法,通过格式化字符串的方式将两个字符串以冒号拼接起来。代码如下: ```java String str1 = "Hello"; String str2 = "World"; String result = String.format("%s:%s", str1, str2); ``` 上述代码中的"%s:%s"是格式化字符串,其中的"%s"表示一个字符串的占位符,冒号用于拼接两个字符串。 最后,通过调用String.format()方法并将str1和str2作为参数传入,就可以得到以冒号拼接的结果字符串"Hello:World",并将其赋值给result变量。 这样,我们就通过String.format()方法成功地将两个字符串用冒号拼接起来了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值