我刚写了一段代码:
Boolean b1 = new Boolean("programmer");
Boolean b2 = new Boolean("tester");
System.out.println(b1.equals(b2));
它打印true
作为输出。的为什么吗
根据JAVA文档
new Boolean(String)
:如果字符串参数不为null且相等,则分配一个表示值true的Boolean对象,忽略 case,to string" true"。
答案 0 :(得分:5)
Boolean b1 = new Boolean("programmer"); // false
Boolean b2 = new Boolean("tester"); // false
所以测试false == false
是true
。
来自
public Boolean(String s)
constructor signature :
Boolean.parseBoolean("True")
返回true
Boolean.parseBoolean("yes")
返回false
答案 1 :(得分:3)
<form ng-if="some_name == '1'">
<input ng-model="model_name">
</form>
<form ng-if="some_name == '2'">
<input ng-model="model_name">
</form>
{{model_name}} //This is different from the value of either of the input elements
//it has the initial value which i would assign : $model_name = "xyz"; in my associated js file
和b1
都是b2
,因此他们相等。
仅当字符串为Boolean.FALSE
(忽略大小写)时,"true"
才会new Boolean(String)
。
这是TRUE
的构造函数:
Boolean
public Boolean(String s) {
this(parseBoolean(s));
}
方法:
parseBoolean
答案 2 :(得分:1)
布尔值的默认值为false ..在您的情况下为
Boolean b1 = new Boolean("programmer"); // false
System.out.println(b1);
Boolean b2 = new Boolean("tester"); // false
System.out.println(b2);
因此false == false
始终返回true
除此之外,如果你想比较你给出的字符串,那么你应该使用 String
包装类。