在我的项目中,我必须查看两个布尔值是否设置为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中的红色下划线
答案 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中):
String
,Date
等
因此,您必须通过调用实例的构造函数来创建实例。现在我没话题了:)
答案 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
}