Java字符串、包装类的比较问题

1.==比较的是变量自己,对应引用变量来讲,比较的是引用地址值,而非引用指向的对象;java

2.字符串和基本类型包装类都是引用类型mysql

3.两个字符串比较只能使用equals()方法sql

String s="s";
        String ss="s";
        String sss=new String("s");
        System.out.println(s==ss);//true,s和ss是常量池中的同一个地址
        System.out.println(s==sss);//sss不在常量池中

4.两个基本类型包装类比较、基本类型与包装类比较数据库

Integer a = new Integer(1);
        Integer aa = new Integer(1);
        System.out.println(a==aa);//false ,包装类不该该使用==比较
        int c=1;
        System.out.println(a==c);//true,a在堆中,c在常量池中,a被自动拆箱为基本类型
        Short b = new Short((short) 1);
        System.out.println(a.equals(b));//false,不一样类型的包装类使用equals比较不会报错
        //System.out.println(a==b);  不一样类型的包装类不能使用==比较,会报错
         byte d=1;
        System.out.println(c==d);//不一样类型的基本类型能够比较,会自动转换类型

总结:字符串全都使用equals比较,基本类型和包装类之间使用==和equals均可以,两个包装类型使用equals比较。安全

mysql+mybatis查询数据库,若是某个字段在数据库中为null,则返回的数据中没有该字段mybatis

从mybatis返回的结果(实体类,或集合)中去取该字段,获得的是null;指针

若是想使用equals方法判断该字段是否为空字符串或其余,使用"".equals(目标字符串)会更安全,避免空指针异常。code

相关文章
相关标签/搜索