例如,有更好的方法吗?
public static String Name = "Name";
public static double Version = 0.1;
public Main() {
Display.setTitle(Name + " " + Version);
}
我不喜欢做
+ " " +
答案 0 :(得分:2)
Java的现代版本附带一个printf
like实用程序,允许您声明格式化字符串,用值替换格式化字段。
String s = String.format("%s %f", Name, Version);
乍一看,这听起来似乎是一个沉重的解决方案,但是当你考虑所有的堆捶打时你会使用"许多字符串构建并丢弃以获得你的答案",它通常是效率更高。
第二种方法是使用StringBuilder
简单地构建字符串。
SringBuilder buffer = new StringBuilder();
buffer.append(Name);
buffer.append(" ");
buffer.append(Double.toString(Version));
String s = buffer.toString();
虽然它似乎比某些解决方案更糟糕,但在编译器无法确定您尝试的内容的情况下,它可能比Name + " " + Version
解决方案更有效。 (如果它可以确定您正在尝试的内容,那么Name + " " + Version
方法将在编译时被静默重写以使用StringBuilder
。
答案 1 :(得分:1)
如果你可以Name
和Version
final
(我的意思是,他们看起来像常量一样),那会更好,因为
Name + " " + Version
然后是编译时常量表达式,因此它将在编译时进行评估。
答案 2 :(得分:1)
如果你只想将两件事加入一个字符串,我同意评论说+ " " +
是要走的路。如果您有两个以上的单独字符串并希望保持其可读性,String.join()
是String.format()
的替代,不需要格式化语法。然而,它确实要求所有部分都是字符串,因此使用double会使其更复杂。
// if Version was a string
String.join(" ", name, version, more, strings)
// as Version is double, you have to convert it first
String.join(" ", name, version + "", more, strings)
答案 3 :(得分:0)
printf
例如:
System.out.printf("%5s%1f", name, version);
这将打印5个空格然后命名,1个空格然后版本。 你也可以这样做:
System.out.printf("%-5s%f", name, version);
这将在字符串后打印5个空格。等
来源:sourcelink