Java更好的添加空间的方法

时间:2018-01-03 07:27:01

标签: java

例如,有更好的方法吗?

public static String Name = "Name";
public static double Version = 0.1;

public Main() {
    Display.setTitle(Name + " " + Version);
}

我不喜欢做

    + " " +

4 个答案:

答案 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)

如果你可以NameVersion 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