全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

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

/* 
Come from xixifeng.com 
Author: 习习风(StellAah) 
*/ 
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  
    //所以可以得出结论: ==参与非对象类型运算时,是用来比较常量的值是否相等    
  } 
} 

综上所属,得出如下结论:

1) ==运算符参与对象类型运算时是用来比较对象是否想得的.
2) ==运算符参与非对象类型运算时是用来比较值是否相等的.
3) equals()方法用于比较两个对象的值是否相等
4) 两个对象的hashCode()值相等,并不代表其对象也相等
5) intern()方法能使两个(对象不相等而值相等的)对象变得相等,从而可以公用内存已有的对象,这样做可以节约内存资源.
6) 对象在间接赋予(有可能与已有对象)同样的值的时候,建议用一下intern()方法,从而可公用内存中存在的对象.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java中==运算符与equals方法的区别及intern  # java  # equals与  # ==  # 区别  # 详解java==运算符和equals()方法的区别  # Java中比较运算符compareTo()、equals()与==的区别及应用总结  # java的==运算符和equals操作详解  # 运算符  # 是用来  # 抛出  # 结果是  # 有可能  # 已有  # 这样做  # 能使  # 不相等  # 自己的  # 是由  # 这两个  # 希望能  # 要用  # 并不代表  # 谢谢大家  # 嫁给  # 主要用于  # 这三个  # 方法来 


相关文章: 已有域名如何免费搭建网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  建站之星24小时客服电话如何获取?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  详解jQuery停止动画——stop()方法的使用  魔方云NAT建站如何实现端口转发?  制作网站外包平台,自动化接单网站有哪些?  如何设置并定期更换建站之星安全管理员密码?  广州建站公司哪家好?十大优质服务商推荐  Python路径拼接规范_跨平台处理说明【指导】  电商网站制作公司有哪些,1688网是什么意思?  如何通过山东自助建站平台快速注册域名?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  大型企业网站制作流程,做网站需要注册公司吗?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  家庭建站与云服务器建站,如何选择更优?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何通过服务器快速搭建网站?完整步骤解析  建站之星2.7模板:企业网站建设与h5定制设计专题  建站之星安装需要哪些步骤及注意事项?  ,怎么在广州志愿者网站注册?  如何用VPS主机快速搭建个人网站?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  如何在腾讯云服务器上快速搭建个人网站?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何在香港免费服务器上快速搭建网站?  广州商城建站系统开发成本与周期如何控制?  建站主机系统SEO优化与智能配置核心关键词操作指南  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何通过老薛主机一键快速建站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  如何基于PHP生成高效IDC网络公司建站源码?  如何自定义建站之星网站的导航菜单样式?  如何在阿里云完成域名注册与建站?  建站主机服务器选型指南与性能优化方案解析  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何通过商城免费建站系统源码自定义网站主题?  建站之星后台管理如何实现高效配置?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何快速登录WAP自助建站平台?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  如何选择域名并搭建高效网站?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。