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

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(目标字符串)会更安全,避免空指针异常。

猜你喜欢

转载自my.oschina.net/u/3160411/blog/1590630