public class Hello {
public static void main(String[] args) {
String[] numArray=new String[10];
numArray[0]="a";
numArray[1]="b";
numArray[2]="c";
for(int i=0;i<numArray.length;i++){
 
if(numArray[i]==null){ 
break;
}
System.out.println(numArray[i]);
}
}
}数组长度为10,前三个下标的内容分别为 a,b,c 后面值系统默认为7个null  ,if判断条件处: 为何用==于判断字符串是否相等,而不是用equals去判断相等,用equals会报错,字符串类型不都是用equals去判断是否相等的么?

解决方案 »

  1.   

    你这里是 String 类的对象
    这里是判断一个对象是不是空(未初始化)故用的是 == null
    equals是 object 的方法 
    这里未初始化的 String 对象调用 equals 当然是要报错了
      

  2.   

    equals 是object类方法,不能判断一个未初始化的对象~~
      

  3.   

    其实 Object 中的 equals 调用的就是 ==
    只是 String 类重写了这个方法,用以判断2个字符串的内容是否相等
    楼主你这里是需要判断哪些数组元素未被初始化
    null 与 "null" 不是一回事
      

  4.   

    //equals是判断2个对象的内容是否相等,这个数组中的元素是字符串
    //字符串可以直接用==来判断相等否
    public class Hello{
        public static void main(String[] args) {
            String[] numArray=new String[10];
            numArray[0]="a";
            numArray[1]="b";
            numArray[2]="c";
            for(int i=0;i<numArray.length;i++){
                     
               if(numArray[i]==null){
                         break;
                }
                System.out.println(numArray[i]);
            }
        }
    }
      

  5.   


    一楼正解!楼主要明确到底初始化没有,不然是不能使用该方法的
    还有,我也想问问,string.equals(null)这有意义么。。
      

  6.   

    字符串
    String s1=”hello”;
    String s3=”hello”;
    s1==s3吗? //true
    注意:s1与s3不是new出来的
    字符串常量分配在datasegement
    s1在栈空间,编译器对存在datasegement的数据有优化,新new出来的s3还是指向”hello”对象
    s1=new String(“hello”)
    s2=new String(“hello”)
    s1!=s2     因为是new出来的对象在heap内
    比较方法:s1.equals(s2)//true 只要代表相同的字符序列
      

  7.   

    补充:新创建的字符串还是指向“hello”,笔误
      

  8.   

    null是个空对象,用==就是判断数组的当前元素是否是个空对象
    equals是比较值,既然是null,就没有所谓的值比较,所以用==判断null
      

  9.   

    string.equals(null)还是有一定的意义的,如果想简化程序的话
    for example boolean isBlankString(String s) {
        return "".equals(s); //这样,不用判断s是否为null,如果反过用s.equals(""),当s是null时,会抛出空指针异常
    }
      

  10.   

    说的很对,字符串的比较需要用equals方法,用==是会出错的