if(audit.getAuditResu().equals(“已纳入《新技术目录》)”))

解决方案 »

  1.   

    我必须再仔细说明一下我用过if(audit.getAuditResu().equals(“已纳入《新技术目录》)”))
    但是报错  NullPointer
      

  2.   

    if(audit.getAuditResu()!=null&&audit.getAuditResu().equals(“已纳入《新技术目录》)”))
      

  3.   

    我记得==比较的是引用,我用的是jdk7,
    在StringPool里是根据hash值,同样的字符串返回的是同一个引用
      

  4.   

    if(null!=audit.getAuditResu()&&audit.getAuditResu().equals(“已纳入《新技术目录》)”)) 
      

  5.   


    equals方法、它用来比较字符串是否相等、如果直接等于(==)判断那么(==)判断的是目标地址是否相等、而不是两个字符是否一样。看下面的代码:String str1 = "胡汉三很懒";  
    String str2 = "胡汉三很懒";  
    System.out.println(str1==str2);  
    System.out.println(str1.equals(str2)); 
     
    这样的结果都是true。
    为什么呢、因为str1跟str2的目标地址是一样的。在核心技术卷一中、不可变字符串小节有讲到:"编译器可以让字符串共享、为了弄清具体的工作方式,可以想像将各种字符串存放在公共的存储池中。字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。"。但是很多时候我们总是人为的new一个新的字符、人为hold住了java字符串的共享机制。
    如下面一段代码:String str1 = "胡汉三很懒";  
    String str2 = new String("胡汉三很懒");  
    System.out.println(str1==str2);  
    System.out.println(str1.equals(str2));
      
    这样过后、str1=str2终于false了。因为他们不在共享存储池中存放字符地址了!new关键字给str2对象开辟了另一个存储空间。从而使目标地址不在一致。
    所以便有了在java中比较字符串是否相等得用equals方法的编程习惯。因为有时候、很多时候我们使用的字符串的目标地址都是不一致的。你认为,你实体类里面存储的字符串地址会跟你自己又重新声明的字符串地址一样么?