繁体   English   中英

在Java中将++一元运算符与Map Get函数配合使用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM