`
stacker3520
  • 浏览: 17705 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

"=="和"equal"的区别

    博客分类:
  • J2SE
阅读更多

public class EqualTest {
public static void main(String[] args) {

    //对于基本类型的变量。"=="和"equal"的区别
    int t1=57;
    int t2=67;
    int t3=124;
    int t4=124;
    
    //“==”对于基本数据类型,判断两个变量的值是否相等。
    Boolean result1=(t1==t2);
    Boolean result2=((t1+t2)==t3);
    Boolean result3=(t3==t4);
    
    System.out.println("\n\n-----【t1==t2】"+result1+"\n-----【(t1+t2)=t3】"+result2+"\n-----【t3=t4】"+result3);
    //“equal”不能用于基本数据类型。只能用于类变量。对于基本数据类型要用其包装类。
    Integer i1=new Integer(t1);
    Integer i2=new Integer(t2);
    Integer i3=new Integer(t3);
    Integer i4=new Integer(t4);
    
    
    Boolean ri1=i1.equals(i2);
    Boolean ri2=i3.equals(i1+i2);
    Boolean ri3=i3.equals(i4);
    
    System.out.println("\n\n-----【i1.equals(i2)】"+ri1+"\n-----【i3.equals(i1+i2)】"+ri2+"\n-----【i3.equals(i4)】"+ri3);
  
    //对于对象变量,"=="和"equal"的区别

    String st1="wasiker ";
    String st2="is super man";
    String st3="wasiker is super man";
    String st4="wasiker is super man";
    
    Boolean b1=(st1==st2);
    Boolean b2=(st1+st2)==st3;
    Boolean b3=(st3==st4);
    
    System.out.println("\n\n-----【st1==st2】"+b1+"\n-----【(st1+st2)==st3】"+b2+"\n-----【st3==st4】"+b3);

//因为对象变量的存储的是对象在内存中的路径,即内存地址。所以用“==”比较时,即使
//对象的值相等,但是他们的内存地址不同,所以==的结果为false。故“==”用于比较两
//个变量的值是否相等,而不是变量引用的对象是否相等

    Boolean r1=st1.equals(st2);
    Boolean r2=(st1+st2).equals(st3);
    Boolean r3=st3.equals(st4);
    
    System.out.println("\n\n-----【st1.equals(st2)】"+r1+"\n-----【(st1+st2).equals(st3)】"+r2+"\n-----【st3.equals(st4)】"+r3);

//equal用于比较两个对象是否相同。
}
}
运行结果为:
-----【t1==t2】false
-----【(t1+t2)=t3】true
-----【t3=t4】true

-----【i1.equals(i2)】false
-----【i3.equals(i1+i2)】true
-----【i3.equals(i4)】true

-----【st1==st2】false
-----【(st1+st2)==st3】false
-----【st3==st4】true

-----【st1.equals(st2)】false
-----【(st1+st2).equals(st3)】true
-----【st3.equals(st4)】true

总之:
“==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】
equal用于比较两个对象的值是否相同【不是比地址】

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

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

 

转自:http://blog.sina.com.cn/s/blog_608105cb0100i59b.html

 

分享到:
评论

相关推荐

    equal与==区别

    ### equal与==的区别 在Java编程语言中,`equal`方法和`==`操作符都是用来比较对象之间是否相等的工具,但它们之间存在重要的差异。本文将从三个方面进行详细的对比分析:字符串的比较、非字符串对象的比较以及基本...

    3 Java中关于==和equal的区别 以及equals()方法重写

    Java 中关于 == 和 equal 的区别 及其 equals() 方法重写 Java 语言是 Sun 公司的开发成果,其主要特点是可以执行强,与平台的无关性使其实用性更强。但是 Java 中的 == 与 equal 是有区别的。 == 操作符是 Java ...

    浅析java中String类型中“==”与“equal”的区别

    "浅析Java中String类型中“==”与“equal”的区别" ...理解 “==” 和 “equal” 操作符的区别对于使用 Java 中的 String 类型非常重要。只有当我们正确地使用这两个操作符时,才能编写出正确的程序。

    java中==与equal()区别

    Java 中的 == 和 equals() 是两个不同的比较方法,它们之间有着很大的区别。== 操作符专门用来比较两个变量的值是否相等,也就是比较变量所对应的内存中所存储的数值是否相同。用于比较两个基本类型的数据或两个引用...

    【Java面试题】equals与==的区别

    【Java面试题】equals与==的区别

    java中 == 与 equal 的区别讲解

    在Java编程语言中,`==` 和 `equals()` 是两种常用的比较操作符,它们在不同...理解和掌握这两个操作符的区别是编写高质量 Java 代码的关键。在实际开发中,合理地使用它们能帮助我们编写出更加准确和易于维护的代码。

    ==和equals的比较

    在理解 `==` 和 `equals` 之前,我们需要了解堆和栈的区别。堆是一种动态分配的内存区域,由程序员自己申请和释放,而栈是一种自动分配的内存区域,由编译器自动分配和释放。堆和栈的区别体现在以下几个方面: 1. ...

    java中equals和等号(==)的区别浅谈

    了解这两者的区别对于编写正确的代码至关重要。 首先,我们来看Java中的数据类型。Java的数据类型分为两大类:基本数据类型(原始数据类型)和复合数据类型(类)。基本数据类型包括`byte`, `short`, `char`, `int`...

    equals与==之间的区别

    在Java编程语言中,`equals`方法与`==`操作符是进行对象比较时最常用的两种方式,但它们之间存在着显著的区别。理解这些差异对于正确地处理对象比较至关重要。 ### `==` 操作符 `==`操作符主要用于比较两个基本...

    浅谈java 中equals和==的区别

    在Java编程语言中,`equals()` 和 `==` 运算符经常被用来比较对象,但它们之间存在着显著的区别。理解这些差异对于编写正确、健壮的代码至关重要。以下是关于 `equals()` 和 `==` 在Java中的详细解释。 首先,`==` ...

    VerilogHDL编程举例.doc

    Verilog HDL(硬件描述语言)是一种广泛使用的语言,用于数字系统的建模、设计和验证。它允许工程师以一种类似于...同时,它也展示了wire类型和reg类型的区别,以及`always`块的使用,这些都是Verilog HDL编程的基础。

    与==的区别.docxequal与==的区别.docx

    在Java编程语言中,`equals()`方法和`==`运算符是用于比较对象之间关系的两种常见方式,但它们有着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`==`运算符主要用于比较基本类型(如int、char、...

    Ruby里4种比较函数(equal?, eql?, ==, ===)详解

    每种函数在特定场景下都有其独特的用途,理解它们的区别对于编写精确的代码至关重要。 1. **equal?**: - `equal?` 是用来判断两个对象是否在内存中是同一个实例,也就是说它们是否有相同的`object_id`。它是最...

    python 两个一样的字符串用==结果为false问题的解决

    #### 补充知识:Python2与Python3中的不等于运算符区别 在Python的不同版本中,不等于运算符的表示方式有所不同: - **Python 2**:在Python 2中,可以使用`<>`或`!=`来表示不等于。例如: ```python print(23 ...

    面试题~ equals() 和 == 区别

    可以使用在基本数据类型变量和引用数据类型变量中 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同) 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用...

    简单概括 ==跟equals的区别

    ==  == :既可以比较基本类型,也可以比较引用类型,如果比较八大数据类型主要比较的是值,比较引用类型主要比较的是内存地址值 equals(没有被重写过) ...总结:==跟equals的区别 1. ==既可以比较基本

    why-equal-or-not:一个简单的演示,揭示 JavaScript 中相同的神话

    总的来说,掌握JavaScript中的`==`和`===`的区别是每个前端开发者的基本功。正确使用它们能确保代码的健壮性和可预测性,减少因类型转换引发的错误。通过实践和学习,如"why-equal-or-not"这样的资源,我们可以更好...

    两个等号与三个等号的区别

    在源码分析和工具使用中,理解这些运算符的区别至关重要。例如,在调试代码时,我们可能需要确定变量是否严格等于特定的值,而不是仅仅值相等。这有助于找出潜在的类型错误或逻辑问题。 在进行自动化脚本编写或者...

    XDU软工院选FPGA第4次.docx

    本次实验中,通过描述语言完成一位比较器功能,并在 modelsim 中完成比较功能仿真测试,熟悉了 modelsim 软件的仿真调试,了解了数据流描述与行为级描述的区别。 五、结论 通过本次实验,掌握了 VHDL 语言的基本...

    js代码-shallow equal

    在JavaScript编程中,“shallow equal”(浅比较)是一种用于检查两个对象是否具有相同属性值的方法,但不考虑嵌套对象或数组的深层结构。它通常用于比较简单对象,不涉及复杂的引用类型。本篇文章将深入探讨...

Global site tag (gtag.js) - Google Analytics