String[] a={"1","2"};
String n="1";
out.print("数量:"+a.length+"
");
String m="";
for(int i=0;i<a.length;i++){
if(a[i]==n) out.print("TRUE <br>");
out.print("输出:"+a[i]+"<br>");
m+=a[i]+",";
}
out.print("输出:"+m+"
");
String[] b;
b=m.split(",");
out.print("数量:"+b.length+"
");
for(int i=0;i<b.length;i++){
if(b[i].toString()==n) out.print("TRUE <br>");
out.print("输出:"+b[i]+"<br>");
}
我是想判断n,为什么第一个数组就可以得出true 第二个就没有呢。
用equals()
因为Java里String的==是用来判断对象是否“引用相等”,也就是说是不是“同一个对象”。
数组a里的第一个元素与后面的n都是指向"1"这个字面量对应的String实例,是同一个对象。后面从m.split()得到的第一个元素虽然内容也是1,但与前面的n却不是同一个对象,所以用==就得到false。在第二个循环里把==换成n.equals(b[i])就行。