日期:2014-05-20  浏览次数:20636 次

新手,求指教
String[] names=new String[10];
/**用于指定位置查找name
 *参数:start表示开始位置,end结束位置,name是需要查找的那个姓名。
**/
public boolean seacherName(int start,int end,String name){
  boolean result=false;
  for(int i=start-1;i<end;i++){
  if(name.equals(names[i]))
  result=true;
  }
  return result;
  }

在我没有赋值之前,我调用这个方法,输入名字为字符串的初始值null,为什么返回值是false?
求讲述下原理。

------解决方案--------------------
调用的格式是seacherName(0,10,null)还是seacherName(0,10,"null")?
如果是第一种肯定会抛NullPointerException
第二种肯定会返回false啊!"null".equals(null)必定为false
因为String中覆盖了Object中的equals方法
看一下源代码就知道了
Java code

boolean equals(Object object){
       if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
           //........remainder
}