Java 在定义字符串的时候不支持字符串插值, 即不能在字符串中捕获作用域中的变量, 用来组成当前字符串. 而这可以说是其他各种言都具备的基本特性. 例如 Bash 中可以这样
bash-3.2$ name=Yanbin
bash-3.2$ echo "Hello $name"
Hello Yanbin
Java 中不支持类似的方式
String name = "Yanbin";
String greeting = "Hello $name"; //Java 中无法把 $name 替换为 name 变量值 "Yanbin"
而使用 Java 必须用 String 的静态方法 format (注意是静态方法哦) 来间接的格式化出一个字符串, 可以这么写
String.format("Hello %s", "World");
String.format("%1$s %1$s %s %s %2$s", "aa", 10); //aa aa aa 10 10
我们看到在用 format 格式化时匹配参数会是一个不小的问题, 相同使用法的打印输出方法是 System.out.printf()
. 别说字符串插值了, 如果 format 方法是 String 的一个实例方法应用起来都会便利些, 如 "Hello %s".format("World")
会容易读些, Scala 的字符串实例就有 format
方法了. 阅读全文 >>