首页 » Ruby » Ruby vs Java -- "== 与 equal"

Ruby vs Java -- "== 与 equal"

原文 http://blog.csdn.net/axu_air/article/details/78607549

2017-11-23 02:01:13阅读(287)

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

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹