Ruby vs Java -- "== 与 equal"

来源:互联网 发布:mac flash发热 编辑:程序博客网 时间:2024/05/02 20:33

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 = s2s1 == s2          # => trues1.equal? s2     # => falses3 == s2          # => trues3.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 != i21625635731================s1 != s2类型:s1:class java.lang.String s2: class java.lang.String================s3 == s4class 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