[英]Using ++ Unary Operator with a Map Get function in Java
如果要从Map中提取一个Integer值并将其放入一个新的int变量中并添加一个变量,为什么++
运算符不能与map.get()
函数一起使用? 例如, int foo = map.get(key)++;
为了解决这个问题,我用了
HashMap<key, Integer> map = new HashMap<key, Integer>();
//Integer values are added in
int foo = map.get(key);
foo++;
但是我很好奇为什么前面的例子是一个无效的论点。 根据文档,Map get()
函数返回指定键所映射到的值;如果此映射不包含该键的映射,则返回null。
授予返回的值不为null时,将返回一个Integer,那么在进入foo之前难道不应该能够增加Integer吗?
请看JLS§15.14.2 :
后缀表达式后跟++运算符是后缀增量表达式。
PostIncrementExpression:
PostfixExpression ++
后缀表达式的结果必须是变量 [...]
这清楚地定义了后缀增量表达式的语法,也清楚地指出了后缀表达式必须是变量。
因此,您根本无法在运算符调用上使用运算符++
。
增量/减量运算符仅对变量起作用,而对文字数值不起作用
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 1);
// These will work
int foo = map.get(1);
System.out.println(foo);
foo++;
System.out.println(foo);
// This will not work because of the reason mentioned above
System.out.println(map.get(1) ++);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.