Ruby vs Java -- "== 与 equal"

Ruby vs Java

该文档包含ruby与java的异同比较

阅读文档,你将了解:

  • == 与 equal 的区别
  • 重写与重载

Difference between “==” and “equal”

NOTE:
ruby为弱类型语言,java为强类型语言。最基本的区别就是,ruby容忍隐式转换。
ruby中一切皆对象,java中基本类型的不具备对象特性

ruby

ruby: String 类中 ‘==’ 和 ‘equals?’ 方法

NOTE:
“==”比较字符串中所包含的内容是否相同。
“equals()”比较两个变量本身的值,即两个对象在内存中的首地址。

s1 = "axu"
s2 = "axu"
s3 = s2
s1 == s2          # => true
s1.equal? s2     # => false
s3 == s2          # => true
s3.equal? s2     # => true

java

java: 类中 ‘==’ 和 ’equal’ 方法

NOTE:
1. 对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
2. 对于非字符串变量来说,”==”和”equals”方法的作用是相同的都是用来比较其
对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。

public class Demo20171122 {
  public static void main(String args[]){
    String s1, s2;
    String s3 = "axu", s4 = "axu";

    s1 = new String("axu");
    s2 = new String("axu");

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

    if(s1 == s2) {
      System.out.println("================");
      System.out.printf("s1 == s2");
      System.out.println("类型:s1:" + s1.getClass().toString() + " \ns2: " + s1.getClass().toString() );

    }else{
      System.out.println("================");
      System.out.println("s1 != s2");
      System.out.println("类型:s1:" + s1.getClass().toString() + " \ns2: " + s1.getClass().toString() );

    }

    if(s3 == s4){
      System.out.println("================");
      System.out.println("s3 == s4");
      System.out.println(s3.getClass().toString());
      System.out.println("类型:s3:" + s3.getClass().toString() + " \ns4: " + s4.getClass().toString() );

    }else{
      System.out.println("================");
      System.out.println("s3 != s4");
      System.out.println("类型:s3:" + s3.getClass().toString() + " \ns4: " + s4.getClass().toString() );

    }

    if(s5 == s6) {
      System.out.println("================");
      System.out.printf("s5 == s6");
      System.out.println("类型:s5:" + s5.getClass().toString() + " \ns6: " + s6.getClass().toString() );

    }else{
      System.out.println("================");
      System.out.println("s5 != s6");
      System.out.println("类型:s5:" + s5.getClass().toString() + " \ns6: " + s6.getClass().toString() );

    }

    if(s1.equals(s2)){
      System.out.println("================");
      System.out.println("s1 equals s2");
      System.out.println("地址:s1: " + System.identityHashCode(s1) + " \ns2: " + System.identityHashCode(s2));

    }else{
      System.out.println("================");
      System.out.println("s1 not equals s2");
      System.out.println("地址:s1: " + System.identityHashCode(s1) + " \ns2: " + System.identityHashCode(s2));

    }

    if(s3.equals(s4)){
      System.out.println("================");
      System.out.println("s3 equals s4");
      System.out.println("地址:s3: " + System.identityHashCode(s3) + " \ns4: " + System.identityHashCode(s4));

    }else{
      System.out.println("================");
      System.out.println("s3 not equals s4");
      System.out.println("地址:s3: " + System.identityHashCode(s3) + " \ns4: " + System.identityHashCode(s4));

    }

    if(s5.equals(s6)){
      System.out.println("================");
      System.out.println("s5 equals s6");
      System.out.println("地址:s5: " + System.identityHashCode(s5) + " \ns6: " + System.identityHashCode(s6));

    }else{
      System.out.println("================");
      System.out.println("s5 not equals s6");
      System.out.println("地址:s5: " + System.identityHashCode(s5) + " \ns6: " + System.identityHashCode(s6));

    }

  }

}

输出:

i1 != i2
1625635731
================
s1 != s2
类型:s1:class java.lang.String 
s2: class java.lang.String
================
s3 == s4
class java.lang.String
类型:s3:class java.lang.String 
s4: class java.lang.String
================
s5 != s6
类型:s5:class java.lang.StringBuffer 
s6: class java.lang.StringBuffer
================
s1 equals s2
地址:s1: 1580066828 
s2: 491044090
**********************
97054
================
s3 equals s4
地址:s3: 644117698 
s4: 644117698
================
s5 not equals s6
地址:s5: 1872034366 
s6: 1581781576
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值