String类的equals

    public boolean equals(Object anObject) {
	if (this == anObject) {
	    return true;
	}
	if (anObject instanceof String) {
	    String anotherString = (String)anObject;
	    int n = count;
	    if (n == anotherString.count) {
		char v1[] = value;
		char v2[] = anotherString.value;
		int i = offset;
		int j = anotherString.offset;
		while (n-- != 0) {
		    if (v1[i++] != v2[j++])
			return false;
		}
		return true;
	    }
	}
	return false;
    }

接下来我们创建一个ArrayList数组,然后去调用contains方法和indexOf方法。

ArrayList<String> al = new ArrayList<String>();
		String s1 = new String("abc");
		String s2 = new String("abc");
		al.add(s1);
		al.add(s2);
		System.out.println(al.size());
		System.out.println(al.indexOf(s2));
		---------- 运行 ----------
		2
		0

		输出完成 (耗时 0 秒) - 正常终止

我们想获得s2,看看indexOf的实现吧!

 public int indexOf(Object o) {
	if (o == null) {
	    for (int i = 0; i < size; i++)
		if (elementData[i]==null)
		    return i;
	} else {
	    for (int i = 0; i < size; i++)
		<span style="color:#ff6666;">if (o.equals(elementData[i]))</span>
		    return i;
	}
	return -1;
    }
红色字又使用到String类的equals方法 ,所以导致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值