我将使用像“hello”world这样的字符串作为hashmap键。 关键实际上来自用户输入,这就是为什么可以将这样的东西作为密钥。 好吗?
答案 0 :(得分:5)
绝对。就Java源代码而言,双引号字符只是“特殊”。你甚至可以在Java本身内逃避它:
HashMap<String, String> map = new HashMap<String, String>();
map.put("foo\"bar", "value");
System.out.println(map.get("foo\"bar")); // Will print value
这里的密钥本身就是foo“bar - 反斜杠只是用于在字符串文字中转义。
答案 1 :(得分:3)
是的,当然。即使是0字符(通常在C中用作字符串结尾符号)也是Java中的字符,所以实际上没有约束。
答案 2 :(得分:2)
不确定。如果密钥是String
类型,则允许所有字符。没有限制。
提醒一下:假设,用户输入:
Jack"o"Lantern
然后Java文字是
"Jack\"o\"Lantern"
答案 3 :(得分:1)
正如其他人告诉你的那样,java中的字符串允许包含所有unicode字符,因此对于hashmap中的键,你没问题。
但是在使用包含未经过滤的用户输入的字符串创建SQL查询,http请求或类似信息时要小心 - 您的软件可能会对SQL注入或跨站点脚本攻击开放。在这种情况下,使用预处理语句等机制而不是字符串连接将有所帮助。