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

原创
2017/12/15 18:15
阅读数 85

1.==比较的是变量本身,对应引用变量来说,比较的是引用地址值,而非引用指向的对象;

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

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

        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返回的结果(实体类,或集合)中去取该字段,得到的是null;

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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部