`
jackroomage
  • 浏览: 1223165 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

equals 和 == 的区别 (全面)

阅读更多

大侠的总结:

   http://hi.baidu.com/kabian/blog/item/5c55863c9f77883670cf6cab.html

 

 

 

自己的总结

 

/*
equals 和 == 的区别
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。也可以理解是比较字符串是否相等。
==用于比较引用(就是比较的内存地址的值是否相等)和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
*/


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

        String  s1=new String("jack");//开辟了2个空间,因为"jack"字符串开辟一个,new又开辟一个空间(这里的值是引用"jack"开辟空间里面的值),由new开辟的空间返回
        String  s2=new String("jack");//同理2个
        String  s3=s1;               
        String  s4="jack";//开辟了一个空间
        String  s5="jack";//同理一个
     //true
       System.out.println(s1.equals(s2));//为true,因为equals比较的是对象的内容

     //false
        System.out.println(s1==s2);  //为false,因为==比较的是在堆里面的位置,因为开辟了4个空间,所以为false。

     //true
         System.out.println(s1==s3);//为true,因为s1开辟的空间也把线引向了s3,所以用的都是s1开辟的空间,结果为true。

     //true
         System.out.println(s1.equals(s3)); //只要s1==s3相等,那么s1.equals(s3)必然相等。

     //true
           System.out.println(s4.equals(s5));//因为String也是个类,所以s4,s5都开辟了新的空间(这样理解是不对的,这里用到了java的一种设计模式,叫做共享模式,

只要s4开辟了空间,s5就会享用s4开辟的空间),既然都用一个空间了,所以答案为true。
     
  
     //true
           System.out.println(s4==s5);//解释同上。

     //true
         System.out.println(s1.equals(s4));//s1与s4的内容都是jack,所以答案为true。

     //false
         System.out.println(s1==s4);//这里s1开辟的两个空间是不会分给一个给s4共享的,所以答案为false。
     }

  }
*************************************************************************************下面是String类的一些特性
1、String类中的内容一旦声明则不可改变例子如下:
   public clss Test{
    public static void main(String[] args){
          String s1="jack";
          fun(s1)
          System.out.println(s1);  //答案为jack
  }
    public static void fun(String s2){
          s2="lucy";       
}
}

分享到:
评论

相关推荐

    set接口经常用的hashCode和equals方法详解

    ### set接口中hashCode和equals方法详解 #### 一、引言 在Java编程语言中,`Set`接口作为集合框架的重要组成部分,在实现无重复元素的数据结构方面扮演着关键角色。为了确保元素的唯一性,`Set`接口依赖于对象的`...

    Java最全面试题200道

    2、== 和 equals 的区别是什么? 1.对于基本类型,==比较的是值; 2.对于引用类型,==比较的是地址; 3.equals不能用于基本类型的比较; 4.如果没有重写equals,equals就相当于==; 5.如果重写了equals方法,equals...

    java常见面试题,面试专用笔记,非常全面

    2. == 和 equals 的区别: 在Java中,"=="用于比较基本类型变量的值,而对于对象,它比较的是两个引用是否指向同一块内存。equals方法默认行为与"=="相同,但很多类(如String和Integer)重写了equals,使其比较对象...

    JAVA期末考试复习提纲

    - **equals和==的区别**:`==`比较值,`equals`比较内容,基本类型用`==`,对象用`equals`。 3. **封装类**:Java为八种基本数据类型提供了对应的封装类,如Integer、Double等,便于进行面向对象的操作。 4. **位...

    java面试题,含泪总结,详细全面

    2. **== 和 equals 的区别** - `==` 运算符: - 对于基本类型,它比较的是数值是否相等。 - 对于引用类型,它比较的是两个对象在内存中的引用地址是否相同,即它们是否指向同一个实例。 - `equals()` 方法: - ...

    最全java面试题及答案(208道)

    2. **== 和 equals 的区别** 在 Java 中,`==` 用于比较基本类型的值或引用类型的地址。对于引用类型,如果两个引用指向同一对象,`==` 返回 true,否则返回 false。而 `equals` 方法默认行为与 `==` 相同,但一些...

    JAVA学习笔记整理(全)

    JAVA学习笔记整理全面涵盖了从基础语法到高级技术的多个领域,包括数据库管理、Web服务器、缓存技术、框架、容器、网络、虚拟机、操作系统、数据结构和操作系统等多个方面。以下将详细介绍其中的关键知识点。 一、...

    JAVA中实现“相等”比较的深入分析.zip

    此外,还要注意`equals()`和`compareTo()`的区别。`compareTo()`是`Comparable`接口的一部分,用于排序,它返回一个整数,表示当前对象与另一个对象的大小关系。虽然两者都涉及对象的比较,但目的和使用场景不同。 ...

    Java经典高频面试题【2023最新版】

    接下来,我们讨论`==`与`equals()`在Java中的用法和区别。`==`操作符在处理基本类型(如int、char等)时,直接比较它们的值是否相等。而对于引用类型(如对象),`==`则比较的是两个引用是否指向内存中的同一块区域...

    .Net应用系统设计指导书

    综上所述,《.Net应用系统设计指导书》通过详实的规定和建议,为.NET开发人员提供了一套全面的编码规范和设计模式,有助于构建高效、稳定和易于维护的应用系统。遵循这些原则,不仅能够提升代码质量,还能增强团队...

    C#面试宝典,知名培训机构对大部分公司.net开发技术面试的较为全面的总结,附有正确答案和答案参考

    【C#面试宝典】是针对.NET开发技术面试的一份全面总结,涵盖了众多核心知识点,旨在帮助面试者准备和复习C#的相关知识。以下是对这些知识点的详细解析: 1. **CLR、CTS、CLS**:CLR(Common Language Runtime)是...

    Java高级资深核心知识全面解析.pdf

    对于面试指南,了解String、StringBuilder和StringBuffer的差异,理解对象相等和引用相等的区别,以及equals和hashCode的关系至关重要。Java序列化中,可以通过transient关键字排除字段。 总之,Java高级资深核心...

    面试基础总结.docx

    JavaSE是Java编程的基础部分,面试中经常涉及的Java基础知识包括变量存储位置、equals和hashcode的重写、Map的分类及其特点、Object的hashCode方法、以及==运算符的使用等。以下是对这些知识点的详细解释: 1. **...

    全面解析Java中的String类的使用

    在Java中,字符串的比较主要通过`equals()`方法和`equalsIgnoreCase()`方法来实现。 1. `equals()`方法:这是Java中用于比较两个对象是否相等的标准方法。对于字符串,`str1.equals(str2)`会比较两个字符串的内容...

    Java面试题200+1

    2. **== 和 equals 的区别** - `==` 在Java中用于比较基本类型的变量时,比较的是它们的值。而对于对象,`==` 比较的是两个对象在内存中的引用是否指向同一个实例。 - `equals` 是Object类的一个方法,初始行为与`...

    Java面试题及答案整理(2024最新版)

    2. **`==`与`equals()`的区别**: - `==`对于基本类型比较的是数值是否相等,而对于对象则是比较引用是否指向同一内存地址。 - `equals()`方法默认行为与`==`相同,但许多类(如String、Integer)会重写`equals()`...

    Java面试八股文2024最新版

    8. **equals与==**:`equals`比较内容,`==`比较引用。 ### 集合框架 9. **String、StringBuffer和StringBuilder**:`String`不可变,后两者可变,多线程环境下推荐使用`synchronized`的`StringBuffer`。 10. **...

Global site tag (gtag.js) - Google Analytics