== 是用来比较两个值类型是否相等。两个值类型是否指向同一个内存地址。
equals(),这个方法被不同的对象重写了,在String里主要是比较两个字符串内容的是否相等。
public boolean equals(Object anObject) {
// 这句话没看懂
// this 应该指的是当前这个字符串实例
if (this == anObject){
return true;
}
if (anObject instanceof String){
String anotherString = (String)anObject;
//这句也没看懂
int n = value.length;
if (n == anotherString.value.length){
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0){
if (v1[i] != v2[i]){
return false;
}
i++;
}
return true;
}
}
return false;
}
不等于
使用 !indexCombines.equals("") 而不是 indexCombines !=""
内存地址 / toString()
Java 语言中拿不到一个对象真正的内存地址。
但是一个对象如果没有重写toString()
方法,打印出来[C@59f95c5d
,这种东西是什么鬼?看一下文档注释:
返回代表这个对象的字符串。一般而言,toString
方法返回一个在字面意义上代表这个对象的字符串。这个结果应当简洁(concise)但又能让阅读的人轻松获取到足表示信息(informative representation)。
建议所有的子类都覆盖这个方法。
这个toString
方法对 Object
类返回一个字符串,这个字符串由对象的实例类的名称、@符号和代表对象哈希code的未指定的16进制组成。换而言之,这个方法返回的字符串等同于对象的值:
getClass().getName() + '@' + Integer.toHexString(hashCode())
代表这个对象的字符串。