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

发布时间 - 2026-01-11 00:47:27    点击率:

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操作详解  # 运算符  # 是用来  # 抛出  # 结果是  # 有可能  # 已有  # 这样做  # 能使  # 不相等  # 自己的  # 是由  # 这两个  # 希望能  # 要用  # 并不代表  # 谢谢大家  # 嫁给  # 主要用于  # 这三个  # 方法来 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  简单实现jsp分页  Laravel如何生成URL和重定向?(路由助手函数)  Laravel如何实现数据库事务?(DB Facade示例)  如何批量查询域名的建站时间记录?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  高防服务器租用指南:配置选择与快速部署攻略  如何在万网利用已有域名快速建站?  javascript中对象的定义、使用以及对象和原型链操作小结  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  手机网站制作与建设方案,手机网站如何建设?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel观察者模式如何使用_Laravel Model Observer配置  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  如何彻底卸载建站之星软件?  网站制作免费,什么网站能看正片电影?  Laravel如何使用Blade模板引擎?(完整语法和示例)  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  装修招标网站设计制作流程,装修招标流程?  如何为不同团队 ID 动态生成多个“认领值班”按钮  如何在建站主机中优化服务器配置?  Laravel如何自定义错误页面(404, 500)?(代码示例)  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  如何在云主机上快速搭建网站?  Linux网络带宽限制_tc配置实践解析【教程】  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  javascript中的try catch异常捕获机制用法分析  如何挑选优质建站一级代理提升网站排名?  如何快速搭建高效服务器建站系统?  如何快速搭建高效WAP手机网站?  奇安信“盘古石”团队突破 iOS 26.1 提权  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel如何使用Sanctum进行API认证?(SPA实战)  浅谈Javascript中的Label语句  如何在IIS中配置站点IP、端口及主机头?  如何有效防御Web建站篡改攻击?  网页设计与网站制作内容,怎样注册网站?  linux top下的 minerd 木马清除方法  如何在万网开始建站?分步指南解析