假如user在前的话,当usr==null的时候,就会出现空指针错了

解决方案 »

  1.   

    那这么说是equals()方法的问题?
      

  2.   

    跟equals什么关系啊,
    当你的user为null时候 相当于是null.equals()了
      

  3.   

    null当然没有.equals方法了,所以就出错了罗
    从内部来看,
    比如说一个object的内存地址是0xxxxxxxxxx
    那么属于它的方法equals可能是0xxxxxxxxxx+0x04或者什么的,
    但是当你的object为null的时候,内存访问就出错了,
      

  4.   

    当然java虚拟机是有检测机制的,所以就报一个异常,
      

  5.   

    equals()方法是比较两个对象的值的内容,如果相同就返回真。
    ==方法是比较两个对象的地址,地址相同即返回真。
    String user = "name";实意是创建了两个对象,一个引用对象user,一个在堆区的常对象"name"
    但user本身的值并不是"name",只是指向了"name" 在内存地址。
    当用user.equals("name")时user引用对象是没有实际值的,系统也并没有为它分配实际的内存空间,自然会出错。而反过来时,会将user指向的内存地址的值“name”与字符串常量"name"进行比较,自然就对了。
      

  6.   

    是啊,一般来说,即便是""也会用"".equal(String variable);的方式来做的。
      

  7.   

    我用过没有出错啊
    <html>
    <body>
    <%
    String user="name";
    int i;
    if(user.equals("name")) i=0;
    else i=1;
    out.println("i="+i);
    %>
    </body>
    </html>
    网页显示i=0
      

  8.   

    正解
     回复人:wizardblue(不死鱼) ( 四级(中级)) 信誉:100  2006-3-26 11:28:30  得分:0
    ?  假如user在前的话,当usr==null的时候,就会出现空指针错了
      

  9.   

    补充说明:
    java语言规范要求equals方法具有自反,对称,传递,一致的特性(corejava)。
      

  10.   

    楼主你的user准是走到某个分支的时候没有初始化,因此报空指针错
      

  11.   

    o_eonian() 好像是学C的,你的那个解释是不对的Java对引用的使用不是这样的
      

  12.   

    最好些一个函数,当返回是NULL时,你返回"",这样比较就不会存在 “”EQUAL(NULL)这种情况了
      

  13.   

    呵呵,在Java里面这样写实可以的。难道在JSP里面会不行。
    public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    String s = "name";
            if(s.equals("name")){
             //add code here
             System.out.println("OK");
            }
    }}
    希望楼主好好看看, 不过一般来说,最好写成
    "name".equals(s)
    这样比较保险是为了防止s==null的情况
    这种情况就是异常了。