帮看个JAVA小问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:09:55
import java.util.*;

public class Test4 {
public static void main(String[] args) {
List l = new LinkedList();
for(int i=0;i<5;i++) {
l.add("a"+i);
}
System.out.print(l);
System.out.println();
System.out.println(l.indexOf("a"+4));
System.out.println(l.indexOf("a4"));
}

}
这个里面"a"+4 ("a4") 都能找到下标值 帮分析下 这是为什么?? 谢谢了
最好能从内存方面分析下

String重载了+运算符,使之具有字符串连接的功能,如果一个字符串+其他数据格式则调用其他数据类型的toString()方法将其转化为String然后进行连接

"a"+4可以看做是"a4"

任何类型的跟String类型“+”,都转换为String类型

String a = "a4";
System.out.println(a == "a" + 4);
你拿这语句在java里试试,返回是true
所以System.out.println(l.indexOf("a"+4));
System.out.println(l.indexOf("a4"));
这两句话的意思是一样的。
因为System.out.println(l.indexOf("a"+4)); 返回的值是a4的地址,在你for循环里面a4的地址就是4,所以就返回4啦。a0-a4嘛。下面的那个也一样