为什么HashMap字符串值转换为大写?

Cap*_*sky 0 java hashmap

我已经宣布了如下地图,

private Map<String, String> mUnsavedFields = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

如果我添加以下条目;

mUnsavedFields.put("username", "Batman");
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但当我在循环中获取"用户名"键的值时,

Iterator it = mUnsavedFields.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pair = (Map.Entry)it.next();
    Timber.d("Key(%s), Value(%S)", pair.getKey(), pair.getValue());
    it.remove(); // avoids a ConcurrentModificationException
}
Run Code Online (Sandbox Code Playgroud)

它返回"BATMAN"全部大写.为什么会发生这种情况?如何保留其中的确切格式?

Mar*_*los 6

%S格式占位符捕获输入参数.

captalized结果只是控制台中显示的打印,值是原始值.

使用

"Key(%s), Value(%s)"
Run Code Online (Sandbox Code Playgroud)


JB *_*zet 6

文档:

由大写字母表示的转换(即'B','H','S','C','X','E','G','A'和'T')是相同的作为相应的小写转换字符的那些,除了结果被转换为大写

(强调我的)

您使用%S,因此它将转换为大写.