以这个为例(摘自Java regexchecker不起作用):
while(!checker) {
matcher = pattern.matcher(number);
if(matcher.find())
checker = true;
else
year++;
}
是否.equals(false)
用于检查的值是否重要Boolean checker
?
我知道有这是颇为相似。但是,很明显,这个问题只针对原始boolean
对象,而不是对象包装器Boolean
;因此,.equals()
将不适用。
另外,应该Boolean
以不同于其他的方式对待boolean
?
从您的评论看来,您正在寻找使用Boolean
包装器类的“最佳实践” 。但是实际上 并没有
最佳实践,因为使用此类开始是一个坏主意。使用对象包装的唯一原因是在您绝对 必须的
情况下(例如使用Generics时,即将boolean
a
存储在a HashMap<String, Boolean>
或类似物中)。使用对象包装器没有任何弊端,也有很多弊端,最值得注意的是,它使您对NullPointerException
s开放。
是否’!’ 用于代替.equals()布尔值?
两种技术都容易受到的影响NullPointerException
,因此在这方面都没有关系。在第一种情况下,Boolean
将开箱将其装箱成其各自的boolean
值并按常规进行比较。在第二种情况下,您从Boolean
类中调用一个方法,如下所示:
html" target="_blank">public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
无论哪种方式,结果都是相同的。
是否使用.equals(false)检查布尔值检查器的值是否重要?
以上,没有。
次要问题:布尔值应与布尔值区别对待吗?
如果您绝对 必须 使用Boolean
该类,请务必null
在进行任何比较之前进行检查。例如,
Map<String, Boolean> map = new HashMap<String, Boolean>();
//...stuff to populate the Map
Boolean value = map.get("someKey");
if(value != null && value) {
//do stuff
}
这将起作用,因为Java会短路条件评估。您也可以使用三元运算符。
boolean easyToUseValue = value != null ? value : false;
但是认真的…除非您被迫不要使用原始类型,否则请使用原始类型。
为什么与有不同的 ? 我正在使用Drools DSL,我必须实现一个规则: 我有这些DSL定义: 要求是以肯定的方式编写可重用的DSL语句,并具有否定它们的能力。
我有一个布尔方法正在对字符串进行一些错误检查。我有一个int类常量叫“numwords”=8。我将一个字符串传递给布尔方法,在该方法中,我使用.split和.length对字符串进行单词计数。一个名为“words”的int计算字符串中的单词数。完成之后,我要执行一个if语句,比较单词和数字单词。如果它们的数目相等,则返回true,否则为false。我试过==和.等于,但都没用。有什么想法吗? 我试
我正在尝试这个代码编写练习,我太迷路了! 它甚至不编译,但即使它编译了,我肯定它也不会工作。
嘿,好吧,所以我在阅读Python的文档,它指出任何空字符串、列表、字典,我想它们都被称为对象(我真的不理解对象的概念:\n如果有人能向我解释,我会很高兴)。无论如何,我的问题是
如何完成名为c的方法,该方法将两个和一个作为输入。如果布尔值为true,则此方法将比较前两个字符串,忽略大小写因素(大写/小写)。如果两个字符串的长度相同,则将它们视为相等的忽略大小写,并且两个字符串中的对应字符的大小写相同。 如果布尔值为false,则此方法应比较两个字符串,如果第一个字符串表示与第二个字符串相同的字符序列,则返回true,否则返回false。 注意:应该返回false 我试图使
我有一个问题,比较布尔值的if语句不起作用。最后一个if语句,其中notifFlag==true,如果我将它放在那里,它就不起作用了。日志显示notifFlag设置为true,但if语句未运行。但是,如果删除notifFlag==true,则if语句将运行。 带有标志得日志: 没有标志得日志: