Java中关于==与equals的理解

        Java中提供了两个比较相同的方法,那便是==与equals。下面我结合一下我的经验谈谈这两个东西的区别。

1.==

        == 只是一个符号,类似于> ,<一样,==可以用于比较数值,也可以用于比较对象。比如下面的代码片段。
Circle c1 = new Circle();   //编者自定义的
Circle c2 = new Circle();
Circle c3 = c1;
System.out.println(c1==c3);   //true
System.out.println(c1==c2);   //false
        如代码中表示的,第一行为c1创建了一个新的Circle对象,第二行为c2创建了一个新的Circl对象,第三行创建c3并指向c1所指向的对象,接下来的输出代码中可以看到,c1==c3显示是true的,而c1==c2却显示是false。个中原因很简单,c3=c1这一句代码将从 指向了c1指向的对象,换一句话说就是c1和c3内存中存储的是同一个Circle对象,而c2中虽然内容什么都和c1一样,但是却和c1指向不同的对象。就好比说,世界上有另外一个你,除了名字和你不一样其他都和一模一样,但是你总不能说这个人就是你吧,==的意思就是这样。

2.equals

         equals不能用于基本数据类型。只能用于类变量。对于基本数据类型要用其包装类(比如Integer,Double之类的)
Circle c1 = new Circle();   //编者自定义的
Circle c2 = new Circle();
Circle c3 = c1;
System.out.println(c1.equals(c2));   //true
System.out.println(c1.equals(c3));   //true
     如上面的代码显示,这一次两个的输出就显示为true了。拿c1.equals(c2)来说,c1和c2类型一样,里面的存着的内容也是一样,只是类变量名字和内存地址不一样,也就是说c1和c2是等价的。

3.注意点

     1.Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。

       2."=="比"equal"运行速度快,因为"=="只是比较引用.

4.小结

        按照我个人的记忆方法,我是这样记的:“==”是等于,而equals只是等价于,等于当然要什么都一样才可以啊,但是等价于可以只是一个拷贝就好了咯,按照中文的释义来加以辨别是不是很简单呢,看来中文果然博大精深,哈哈哈哈哈哈。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值