字符串布尔值>布尔值,总是假的!

时间:2011-04-05 14:56:23

标签: java

我正在读取csv文件并从每行的字段创建一个Person对象,一行代表一个人。正在读入的字符串放在一个数组中,然后将数组元素指定为属性。

通过在这段代码之前和之后放置print语句,我发现'smoker'属性设置为false,而不管数组元素的'true'或'false'字符串值。

if(person_array[7] == "true") {this.smoker = true;}
else {this.smoker = false;}

我错过了什么吗?

由于

伊恩

6 个答案:

答案 0 :(得分:7)

不要对对象执行'==',请使用.equals()。也不要if (...) boolvar = true; else boolvar = false;

this.smoker = person_array[7].equals("true");

或@Adi和@Peter指出

this.smoker = Boolean.parseBoolean(person_array[7]);

答案 1 :(得分:5)

Paul Tomblin的回答应该可以解决你的问题。考虑用以下行代替您的代码,

this.smoker=Boolean.parseBoolean(person_array[7]);

答案 2 :(得分:2)

防止NullPointer异常

if ("true".equals(person_array[7]))

答案 3 :(得分:1)

==不会比较Java中的String个对象。对象上的==比较它们的引用。

你真正想要的是......

if (person_array[7].equals("true") ...

答案 4 :(得分:0)

使用person_array [7] .equals(“true”);

==“true”有时会起作用,特别是当它们都是文字时,ej“true”==“true”,但不会一直有效。

如果您想了解更多信息,可以使用谷歌搜索Java Intern。 string.intern()是“string”== string有时可以工作的原因。

答案 5 :(得分:0)

您必须使用.equals(“true”)

进行检查

使用==比较事物时,检查它们是否指向(或引用)同一个对象。即如果你声明了String a =“Hello”;字符串b = a;在这种情况下,a将是==到b,因为两个变量都指向同一个对象。