【发布时间】:2019-11-13 01:03:27
【问题描述】:
我有一个包含对象的 ArrayList。当我尝试获取 ArrayList 中对象的属性时,返回的变量并不完全是我之前设置为变量的值。例如,当我尝试比较返回的变量时,变量类型“String”不起作用。但是当我打印返回变量的值时,似乎一切正常。
//Class:
public class obj{
public String name;
public obj(String name){
this.name = name;
}
}
//Add to List:
ArrayList<obj> objs = new ArrayList<obj>();
objs.add(new obj("txt"));
//Get Value:
String name = objs.get(0).name;
//Not working:
if (name == "txt"){
println("...");
}
//But working:
println(name); //same
if (name.charAt(0) == 116){ //"t"
println("working");
}
我试过了:
- getter/setter 方法的结果相同
- 使用一个函数将返回的 var 转换为一个包含返回变量的每个字符的新字符串,该函数采用返回的 var 的每个字符,因为 .length() 正在工作。
- 创建返回对象名称的“toString()”方法。
【问题讨论】:
-
1) 您使用
==运算符进行字符串比较,这是错误的!你应该使用String::equals。 2) 为了能够比较两个obj实例的相等性,您需要覆盖equals和hashcode。 Why to use String::equals, Why to override equals and hashcode -
不相关:A)学习java命名约定。类名转为 UpperCamelCase B) 使用有意义的名称
objs绝对没有任何意义!
标签: java class oop object arraylist