(总是忘记)的equals方法与“==”简单比较

由于在学java的时候对于具体方法没有深究,对于java也是一知半解,所以在工作的时候写java代码比较时总是喜欢用“==”,而导致很多问题改了一次有一次,唉。。。。废话不多说,写篇博客以后做自己的笔记吧。

先说一下“==”,这个符号在java中用作基本类型的比较,而java中的基本类型默认是不能直接调用equals()方法的。

比如

         int i=1;

         int j=1;

         i==j  true

         i.equals()  没有此方法

所以在编程时应记住,遇到的是基本类型的比较时用“==”,

既然说基本类型那么对于基本类型的包装类呢???如Integer,DoubleCharacterFloat等。 

        先说一下包装类型的不同定义

        jdk1.5之后:

                           Integer m=1;

                           Integer n=1;

       jdk1.5之前(只能这样写):

                         Integer m1= new Integer(1);

                         Integer n1= new Integer(1);

      在1.5之后,上面的两种方式都是支持的,但此处要注意。

                          m==n true

                          m1==n1 false

     也就是说jdk1.5之后的包装类升级是把包装类,归为string等非基本类型来处理的。所以在equals()方法上包装类是都支持的

                         m.equals(n) true

                         m1.equals(n1) true

那么对于其他非基本类型呢?

                       String s1= "abc";
                       String s2 = "abc";
                       String s3 = new String("abc");
                       String s4 = new String("abc");

                       s1==s2 true;

                       s3==s4 false

                       s1==s3 false 

                     是的在String中也有“==”可用时,但由于只要有new一个新变量,“==”便不可再用,所以对于string这样的类建议在编程时全用equals()方法

再说说equals方法。。

                    上面已经提到java的基本类型默认不支持equals()方法,那么如果在基本类型上用equals()方法就要自己重新定义

                    而在String,和包装类型时,建议全部用equals()方法。下面说到StringBuffer 这种特殊的类型在equals()上运用

                     StringBuffer的定义只能这样

                      StringBuffer s5=new StringBuffer("abc");
                      StringBuffer s6=new StringBuffer("abc");

                  而    s5.equals(s6) false   当然s5==s6更是false

                 且   String s7="abc"         s7.equals(s5)  false

                 所以在遇到StringBuffer时一定要注意重写equals()方法

总结:通过上面的一系列判断,其实不难发现,equals()方法在比较时较多是比较内容,但其实这里比较内容的类型是在继承object的equals()方法后又重写了自己的equals()方法,而在StringBuffer中,它用到的直接是Object的equals(0方法,所以它依然在比较内存地址。而“==”方法则都是在比较地址。

 

 

好了,就总结这些吧,大家觉得我说的不对,请指出,一起研究一下,嘿嘿

 


 

 

                      

 

     

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值