Java字符串拼接除+外,是否有类似Python的.format或f-string方法?
Java中的字符串拼接方案(对应Python的.format与f-string)
Java并不只能通过+运算符拼接字符串,有多种和Python中.format()、f-string类似的灵活方式,以下是具体实现:
1. String.format() —— 对应Python的str.format()
这个方法通过占位符实现字符串格式化,用法和Python的.format()逻辑相近:
String name = "Eduardo"; String surname = "Garcia"; // 使用%s作为字符串占位符,按顺序传入参数 System.out.println(String.format("Hello %s %s", name, surname));
除了%s,还支持%d(整数)、%f(浮点数)等类型占位符,满足不同数据类型的格式化需求。
2. 模板字符串(Java 17+)—— 对应Python的f-string
Java 17及以后引入了模板字符串,可以直接在字符串中嵌入变量,和Python的f-string几乎一致:
String name = "Eduardo"; String surname = "Garcia"; // 使用STR."..."语法,变量用\{ }包裹 System.out.println(STR."Hello \{name} \{surname}");
如果需要多行文本,也可以结合文本块使用:
String userInfo = STR.""" 用户信息: 姓名:\{name} 姓氏:\{surname} """; System.out.println(userInfo);
如果使用Java 15-16版本,可以用文本块配合formatted()方法实现类似效果:
String greeting = """ Hello {0} {1} """.formatted(name, surname); System.out.println(greeting);
3. StringBuilder/StringBuffer —— 高效拼接场景
如果需要频繁拼接字符串(比如循环中),推荐使用StringBuilder(非线程安全,性能更高)或StringBuffer(线程安全),避免+运算符多次创建String对象带来的性能损耗:
String name = "Eduardo"; String surname = "Garcia"; StringBuilder sb = new StringBuilder(); sb.append("Hello ").append(name).append(" ").append(surname); System.out.println(sb.toString());
内容的提问来源于stack exchange,提问作者Eduardo García de Marina
相关产品推荐
相关产品推荐

