是否可以将两个布尔值与&&进行比较?

时间:2019-06-11 18:19:27

标签: android

在我的项目中,我必须查看两个布尔值是否设置为true。我不能在&语句中放入&&,因为它会导致错误。是否可以检查if语句中两个布尔值是否为真?

编辑:转到查看代码的请求:

//Declarations at top of code
    Switch longplay_button;
    boolean longplay_buttonChecked = false;
    boolean normal_buttonClicked = false;


      } else if **(normal_buttonClicked = true**  && longplay_buttonChecked = false) {
                    inactiveButton.setImageResource(R.drawable.button_default);
                    inactiveButton.setEnabled(false);
                    meme_Sound_Media_Player.release();
                    memeSoundMediaPlayer.start();
//All within on click listener. If button is pressed and longplay switch isn't play shorter sound.

                }

错误被************,它只是IDE中的红色下划线

3 个答案:

答案 0 :(得分:2)

boolean b1 = true;
boolean b2 = false;

if (b1 && b2) { } else { // this will execute because b2 is false }


所有有效。

如果您的意思是Boolean(使用大写字母),那么这是正确的:

Boolean b1 = true;
Boolean b2 = false;

if (b1 && b2) ...

唯一要记住的是大写Boolean是对Object的引用,而不是原始的引用,因此可以是null。例如:

Boolean b1;


if (b1) { } // this will crash with a Null Pointer Exception because b1 is not assigned/initialized.

更新

仅供参考,并且由于不确定OP,here's是Java中原始对象与对象的良好定义。

  

您可以将原始值视为实际数据,将对象视为数据容器。如果原始值在原子上,则对象将是分子。

我不确定这是否是我读过的最好的描述,但基本上是:

int,short,boolean等都是原语,并且不存储在HEAP存储器中(上部);它们是安全的,因为它们永远不能为null。

boolean b1; // false by default
boolean b2; // false by default
int x; // 0 by default

Objects存储在HEAP内存中,而Java则保留对这些对象在内存中的位置的引用(指针)。

String helloString; // this is NULL at this point

要了解这一点,您需要阅读有关Java中的Nullability的信息。本质上,在我创建它的实例之前,上面的字符串将为NULL。对于字符串,这很简单:

String hello = "Hello!";

现在hello(变量)指向内存中存储字符串Hello!的区域。

为此,Java有以下各种非原始版本:

int -> Integer
boolean -> Boolean
double -> Double

有一些用例(尽管通常您应该在可能的情况下总是尝试使用原语)。

另一方面,某些对象绝不是基元(在Java中):

StringDate

因此,您必须通过调用实例的构造函数来创建实例。现在我没话题了:)

答案 1 :(得分:1)

感谢您分享代码。

您遇到的特定错误是因为您试图与=而不是==进行比较。单个等号(=)用于分配,两个等号(==)用于比较

所以,而不是:

else if (normal_buttonClicked = true && longplay_buttonChecked = false) {

您将拥有:

else if (normal_buttonClicked == true && longplay_buttonChecked == false) {

这些布尔短语可以简化。因此,如果您想变得更鸽友,可以尝试以下方法:

else if (normal_buttonClicked && !longplay_buttonChecked) {

但是,请记住马丁提到的可空问题!

答案 2 :(得分:0)

使用此

if (normal_buttonClicked && longplay_buttonChecked){ 
    //if both are true it will enter in this block
}