Android 是否可以将两个布尔值与一个&&;?
在我的项目中,我必须查看两个布尔值是否设置为true。我不能在if语句中放入&&因为它会导致错误。有没有办法检查if语句中的两个布尔值是否为真 编辑:要查看代码的请求,请执行以下操作:Android 是否可以将两个布尔值与一个&&;?,android,Android,在我的项目中,我必须查看两个布尔值是否设置为true。我不能在if语句中放入&&因为它会导致错误。有没有办法检查if语句中的两个布尔值是否为真 编辑:要查看代码的请求,请执行以下操作: //Declarations at top of code Switch longplay_button; boolean longplay_buttonChecked = false; boolean normal_buttonClicked = false; } els
//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中,这一点非常重要):例如:这个解释很好地解释了这一点,谢谢你。忽略我第一条评论中的第二个问题,我现在理解了你的代码。你能分享你正在尝试但不起作用的代码吗?另外,请分享正在报告的错误。啊,这很有意义,谢谢你的解释