文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中的==与equals有什么不同

2023-05-31 15:25

关注

这篇文章给大家介绍Java中的==与equals有什么不同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Java中==运算符与equals方法的区别及intern方法详解

  ==运算符与equals()方法
2. hashCode()方法的应用
3. intern()方法

 public class AboutString2  {   public static void main(String[]arsgs)   {     String myName="xixifeng.com";     String myName3="xixifeng";      String myName4=".com";     String myName5=myName3+myName4;     String myName6="xixifeng.com";          if(myName==myName5)     {              System.out.println("myName==myName5");     }     else     {       System.out.println("myName="+myName);       System.out.println("myName5="+myName5);       System.out.println("myName!=myName5");     }     //经运行打印出: myName!=myName5          if(myName==myName6)     {       System.out.println("myName==myName6");     }     else     {       System.out.println("myName!=myName6");     }     //经运行得出: myName!=myName5,myName==myName6          //myName,myName5(myName5的值是由myName3+myName4得到的),myName6 这三个对象的值是相等的, 为什么 它们之间用==进行运算的结果是 myName!=myName5,myName==myName6呢?     //原因在于==运算符     //显然==参与String运算中不是用来比较值的,而是用来比较对象是否相等的.     //那么在String运算中,通过什么方法来比较它们的值是否相等呢,java 提供了equals()方法 ,主要用于比较对象的值是否相等     //示例如下:     //myName==myName5 是false (不是同一个对象)     if(myName.equals(myName5))     {       System.out.println("myName.equals(myName5) 比较的结果是true !");     }     else     {       System.out.println("myName.equals(myName5) 比较的结果是false !");     }     //经运行输出:myName.equals(myName5) 比较的结果是true ! 在由于myName与myName5不是同一个对象,充分说明:     //equals()方法[是用来比较对象的值是否相等]          //再抛出疑问:是不是两个对象的哈希值相等就说明这两个对象相等呢?     //(由上述测试myName==myName5 得出false ①表明myName与myName5不是同一个对象)     System.out.println(myName.hashCode());     System.out.println(myName5.hashCode());     //经测试 ②myName与myName5的哈希值相等     //由①,② 得出: 两个对象的hashCode值相等,不能表明其对象也相等.      //抛出疑问: 怎样使myName与myName5的对象相等呢?     //引入intern()方法     myName5=myName5.intern();     if(myName==myName5)     {              System.out.println("(myName==myName5) 得true");     }     else     {       System.out.println("(myName==myName5) 得false");     }     //经运行打印出: (myName==myName5) 得true     //结论: intern()方法能使两个(对象不相等而值相等的)对象变得相等     //myName5.intern();的意思,可以解释为: myName5在内存中查找对象嫁给自己,条件是,该对象要与自己的值相等. 找到了,就指定该对象.     //myName5找到对象,并认定,就不必再创建对象了,所以说这样做,可以节约内存资源.          //抛出疑问: 什么样的对象建议使用intern()呢?     // myName="xixifeng.com" myName6="xixifeng.com", myName与myName6的对象是相等的,上述已经证实.     // 所以说,对象在直接赋予同样的值的时候没有必要用intern().     //myName="xixifeng.com" myName5=myName3+myName4,它们的值相等,但是对象不相等,上述已经证实.     //所以说, 对象在间接赋予(有可能与已有对象)同样的值的时候,建议用一下intern()方法,从而可公用内存中存在的对象.               //==参与int型运算中,也营造类似的比较     int i=8;     int j=3;     int k=5;     int m=j+k;     int n=8;     if(i==m)     {       System.out.println("i="+i);       System.out.println("m="+m);       System.out.println("i==m");     }     else     {       System.out.println("i!=m");     }          if(i==n)     {       System.out.println("... ... ... ...");       System.out.println("i="+i);       System.out.println("n="+n);       System.out.println("i==n");     }     else     {       System.out.println("i!=n");     }     //经运行得出i=m(m的值由j+k得到),i=n     //i,m,n的值都相等 , 由于i==m 得出true i==n得出true      //所以可以得出结论: ==参与非对象类型运算时,是用来比较常量的值是否相等      } } 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯