String.format("%1s","").equals("")); // --> return false !
String.format("%1s","").equals(" ")); // --> return true !
- 这是怎么发生的?
- 空间从哪里来?
String.format("%1s","").equals("")); // --> return false !
String.format("%1s","").equals(" ")); // --> return true !
你想添加的参数指标这样
String.format("%1$s", ""); //returns ""
String.format("%2$s %1$s", "a", "b"); //returns "b a"
你的代码中定义的“宽度”
String.format("%3s", ""); // returns " ";
String.format("%3s", "a"); // returns " a";
String.format("%-3s", "a"); // returns "a ";
阅读此项更多信息: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax
这里%1s
是一个格式说明符,它没有任何参数。为无参数的格式说明的一般语法如下
%[flags][width]conversion
其中
可选标志是一组修改的输出格式的字符。有效标志的集合取决于转换。
和
可选宽度是一个非负十进制整数表示的最小字符数被写入到输出。
所以,1
指定宽度,这里是为什么你" "
后面的描述,并且不""
的宽度将被写入到输出的最少字符数。如果转换值的长度小于宽度,则输出将被填充''(\ u0020'),直到字符的总数等于宽度。默认情况下,填充位于左侧。如果给出' - '标志,那么填充将在右侧。如果宽度没有被指定,那么没有最小值。
PS:\ u0020为Space
Unicode字符。
希望这会有所帮助。
你有看过['String.format'](http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax)的文档吗?此行为与指定的完全相同。 –
我实际上对%1 $ s说明符感到困惑,它确实如指定的那样。 – C4stor