Android 是否可以将两个布尔值与一个&&;?

Android 是否可以将两个布尔值与一个&&;?,android,Android,在我的项目中,我必须查看两个布尔值是否设置为true。我不能在if语句中放入&&因为它会导致错误。有没有办法检查if语句中的两个布尔值是否为真 编辑:要查看代码的请求,请执行以下操作: //Declarations at top of code Switch longplay_button; boolean longplay_buttonChecked = false; boolean normal_buttonClicked = false; } els

在我的项目中,我必须查看两个布尔值是否设置为true。我不能在if语句中放入&&因为它会导致错误。有没有办法检查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中的一条红色下划线

boolean b1 = true;
boolean b2 = false;

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


都是有效的

如果您指的是
布尔值
(大写),那么也有点像:

Boolean b1 = true;
Boolean b2 = false;

if (b1 && b2) ...

唯一需要记住的是,带大写的
Boolean
是对对象的引用,而不是原语,因此它可以是
null
。例如:

Boolean b1;


if (b1) { } // this will crash with a Null Pointer Exception because b1 is not assigned/initialized.
更新 仅供参考,并且由于OP不确定,因此在Java中对原语与对象进行了良好的定义

您可以将基本值视为实际数据,将对象视为数据容器。如果原语中的值是原子,那么物体就是分子

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

int、short、boolean等都是原语,不存储在堆内存中(上限);它们是安全的,因为它们永远不能为空

boolean b1; // false by default
boolean b2; // false by default
int x; // 0 by default
对象
存储在内存堆中,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中):

字符串
日期

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

用这个

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

谢谢你分享代码

您遇到的具体错误是因为您试图与
=
而不是
=
进行比较。一个等号(
=
)用于赋值,两个等号(
=
)用于比较

因此,不是:

else if(normal\u buttonClicked=true&&longplay\u buttonclecked=false){

你应该:

else if(normal\u buttonClicked==true&&longplay\u buttonclecked==false){

不过,这些布尔短语可以简化。因此,如果你想变得更为花哨,你可以采用以下方法:

else if(正常按钮点击&!长时间播放按钮点击){


但是,请记住Martin提到的可为空的问题!

如果我听起来像noob,那么很抱歉,你所说的基元类型到底是什么意思?是同一类型的数据,如整数和字符串吗?还有,如果b2为假,那么第一个块如何运行?如果b2为假,那么它不会执行,因为两个布尔值都不是真的绝对不用担心;我们都是真的在我们的生活中,新手在任何时候都会做一些事情,没有什么好羞愧的;对于这种特殊情况,您所问的是Java语言(以及许多其他语言)中的基本问题,因此我给您的最好建议是看看区别是什么(因为在Java中,这一点非常重要):例如:这个解释很好地解释了这一点,谢谢你。忽略我第一条评论中的第二个问题,我现在理解了你的代码。你能分享你正在尝试但不起作用的代码吗?另外,请分享正在报告的错误。啊,这很有意义,谢谢你的解释