JAVA布尔构造函数给出了意想不到的结果

时间:2017-02-21 12:32:27

标签: java constructor boolean

我刚写了一段代码:

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"。

3 个答案:

答案 0 :(得分:5)

Boolean b1 = new Boolean("programmer"); // false
Boolean b2 = new Boolean("tester"); // false

所以测试false == falsetrue

  

来自 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 包装类。