相关疑难解决方法(0)

为什么Java没有条件和条件或运算符的复合赋值版本?(&& =,|| =)

因此,对于在布尔二元运算符,Java有&,|,^,&&||.

让我们简要总结一下他们在这里简要介绍的内容:

对于&,结果值是true两个操作数值是否为true; 否则,结果是false.

对于|,结果值是false两个操作数值是否为false; 否则,结果是true.

对于^,结果值是true操作数值是否不同; 否则,结果是false.

&&操作是一样&,但是评估其右边的操作数只有在其左侧操作数的值true.

||操作是一样|的,但评估其右边的操作数只有在其左侧操作数的值false.

现在,所有5间,那些3有复合赋值版本,分别为|=,&=^=.所以我的问题是显而易见的:为什么不是Java提供&&=||=呢?我发现我需要那些比我更需要更多的&=|=.

而且我不认为"因为它太长"是一个很好的答案,因为Java有>>>=.这个遗漏必须有更好的理由.


15.26分配运营商 …

java conditional-operator short-circuiting assignment-operator compound-assignment

77
推荐指数
4
解决办法
1万
查看次数

Java中有&=和| =短路?

换句话说,以下两个语句的行为方式是否相同?

isFoobared = isFoobared && methodWithSideEffects();
isFoobared &= methodWithSideEffects();
Run Code Online (Sandbox Code Playgroud)

我意识到我可以写一个测试,但有人可能会知道这个,其他人可能会觉得答案很有用.

java short-circuiting

33
推荐指数
1
解决办法
4849
查看次数

Java boolean | =运算符

最近我看到一个代码使用这个:

boolean val = something();
val |= somethingElse();
Run Code Online (Sandbox Code Playgroud)

有趣的部分是| =(二进制)运算符在布尔基元类型上制作.

令我感到惊讶的是,布尔值存在| =存在,好像它是整数类型,并搜索此运算符的Java规范,但找不到任何.

如果左值已经为真,我会好奇是否评估右操作数.

有人能指出我的Java规范吗?

java specifications operators boolean-expression compound-assignment

26
推荐指数
1
解决办法
1万
查看次数

为什么在&&,&,||的情况下输出会有所不同?

这是代码段

你能解释一下输出变化的原因吗?

1)

public static ShortCkt {
    public static void main(String args[]) {
        int i = 0;
        boolean t = true;
        boolean f = false, b;
        b = (t && ((i++) == 0));
        b = (f && ((i+=2) > 0));
        System.out.println(i);      
    }
}
Run Code Online (Sandbox Code Playgroud)

这种情况下的输出为1

2)

public static ShortCkt {
    public static void main(String args[]) {
        int i = 0;
        boolean t = true;
        boolean f = false, b;
        b = (t & ((i++) == 0));
        b = (f & ((i+=2) …
Run Code Online (Sandbox Code Playgroud)

java operators

6
推荐指数
2
解决办法
1406
查看次数

java相当于Delphi NOT

在Delphi中,我可以使用布尔变量执行以下操作:

If NOT bValue then
begin
  //do some stuff
end;
Run Code Online (Sandbox Code Playgroud)

Java中的等价物是否使用了!?

If !(bValue) {
  //do some stuff
}
Run Code Online (Sandbox Code Playgroud)

java delphi boolean-logic if-statement

1
推荐指数
1
解决办法
476
查看次数

这个operatoer是什么意思?

在java中的以下代码中:

Notification noti = nBuilder.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
noti.flags |= Notification.FLAG_AUTO_CANCEL;
Run Code Online (Sandbox Code Playgroud)

这个operator(|=)是什么用的?

java android operators

1
推荐指数
1
解决办法
242
查看次数

在Java/Android中,| =是什么意思?(按位或分配)

可能重复:
Java中的快捷方式"or-assignment"(| =)运算符

我在Android SDK文档中找到了以下示例代码:

    boolean retValue = false;
    retValue |= mActionBarHelper.onCreateOptionsMenu(menu);
    retValue |= super.onCreateOptionsMenu(menu);
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我展示相同的代码,以证明这有什么作用?

注意:我假设方法调用返回一个布尔值,所以我想看一个示例,它看起来像if-else结构.

java android bitwise-operators

0
推荐指数
1
解决办法
515
查看次数

为什么&=运算符与&&的工作方式不同

我只是好奇java是如何工作的.有人可以解释为什么getBoolean在案例1中调用而未在案例2中调用?

public class Main {

    public static void main(String[] args) {
        System.out.println("---------- Case 1 ----------");
        boolean b = false;
        b &= getBoolean(true);

        System.out.println("---------- Case 2 ----------");
        b = false;
        b = b && getBoolean(true);
    }

    private static boolean getBoolean(boolean bool) {
        System.out.println("getBoolean(" + bool + ") was called\n");
        return bool;
    }

}
Run Code Online (Sandbox Code Playgroud)

输出:

---------- Case 1 ----------
getBoolean(true) was called

---------- Case 2 ----------
Run Code Online (Sandbox Code Playgroud)

java boolean operators

-1
推荐指数
1
解决办法
149
查看次数