是否有布尔值的赋值后运算符?

在Java中你可以这样吗?

boolean flag = true; if(flag) return flag = false; // return true and assign false to flag afterwards 

澄清。 以上作品,但首先是假的。 我希望实现的是尽快返回标志,然后将其重置为false

结构看起来像这样:

 boolean flag = false; // some operations which can set the flag true if(flag){ flag = false ; return true}; // some operations which can set the flag true if(flag){ flag = false ; return true}; // some operations which can set the flag true if(flag){ flag = false ; return true}; 

我想通过return flag = false;一次性完成它return flag = false;

不,没有任何内置可以完成你描述的内容。 你用一个临时变量来做:

 boolean flag = true; boolean returnValue = flag; flag = false; return returnValue; 

或者根据你对问题的进一步编辑( “结构看起来像这样”) ,你可以使用!

 boolean flag = false; // some operations which can set the flag true if(flag) return !(flag = false); // some operations which can set the flag true if(flag) return !(flag = false); // some operations which can set the flag true if(flag) return !(flag = false); 

真的,真的不会这样做 。 这是不必要的钝。

看看java.util.concurrent.AtomicBoolean。 我没试过这个,但它可能会给你提出的行为:

 AtomicBoolean flag = new AtomicBoolean(true); System.out.println("First, I'm " + flag.get()); Boolean was = flag.getAndSet(false); System.out.println("I was " + was + " but now I'm " + Flag.get()); 

不,没有办法做到这一点。

为什么不?

那么你需要向Java语言设计师询问真正的答案,但我想他们会不可避免地驳回这样的提议。 Java 旨在成为一种易于学习,阅读和理解的语言。 添加旨在以简洁的方式做“聪明”事情的运算符可能会使语言更难学习,并且对于普通程序员来说更难阅读…… 并且,如果运算符仅在少数用例中真正有用,那么可读性与实用性的争论就更难获胜。

此外,由于与其他(现有)语言function的交互,向Java添加新function通常在技术上比您想象的更困难。

实际上,有先例支持这一点。 Project Coin中的Java 7/8修订提案之一是向Java添加elvis运算符 。 该提案被认为……并最终被驳回 。