s1,s2都是String对象,说说表达式s1==s2与s1.equal(s2

(2009-10-20 21:33:58)

标签:

杂谈

问题:s1,s2都是String对象,说说表达式s1==s2与s1.equal(s2)的区别。

回答:

s1 == s2 与

s1.equals(s2)区别主要取决与两个方面,第一个方面是==操作符和equals函数之间的区别,第二个方面是String对象的特殊性。

首先,==是操作符,它的主要作用是比较两个对象之间是否是同一个,也就是说比较操作符两端的对象在对内存当中是否是同一个地址。equals函数是在Object类当中定义的函数,由于在Java当中每个类都是Object的子类,所以每个类都从Object当中继承了equals方法。在Object当中equals函数和==的作用是一样的,而我们所编写的类从原则上来讲,都应该覆写equals方法,覆写之后的equals方法是用来比较两个对象的内容是否相等。所谓的内容相等应该符合两个条件,第一个是两个对象的类型是否相等,第二是这两个对象成员变量的值是否相等。

其次,String类的对象可以直接使用字面量赋值,而且多个String引用指向同一个字面量时,在堆内存当中只有一个Java对象。如果调用String的构造函数给String类型的引用赋值,那么每调用一次构造函数,在堆内存当中就会生成一个String对象。所以如果s1和s2都是同一个字面量赋值,那么无论是用==比较,还是用equals函数比较,都会返回true。如果s1和s2都是使用构造函数生成的对象,并且传入构造函数参数的字面量相等,那么用==比较会返回false,用equals比较就会返回true。

分享:

喜欢

0

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

java中strings1等于s2_s1,s2都是String对象,说说表达式s1==s2与s1.equal(s2相关推荐

  1. 所有和Java中代理有关的知识点都在这了

    转载自  所有和Java中代理有关的知识点都在这了 对于每一个Java开发来说,代理这个词或多或少都会听说过.你可能听到过的有代理模式.动态代理.反向代理等.那么,到底什么是代理,这么多代理又有什么区 ...

  2. JAVA中同目录下定义类,以及对象的创建与使用,内存图的原理

    JAVA中同目录下定义类,以及对象的创建与使用(听课笔记) JAVA中对象的创建与使用(听课笔记) 示例一 同文件目录下,创建了三个类OOTest01,User,Address类,之间的调用 示例二 ...

  3. 所有和Java中代理有关的知识点都在这了。

    对于每一个Java开发来说,代理这个词或多或少都会听说过.你可能听到过的有代理模式.动态代理.反向代理等.那么,到底什么是代理,这么多代理又有什么区别呢.本文就来简要分析一下. 代理技术,其实不只是J ...

  4. java中new一个对象时具体都发生了什么?

    java是一门面向对象的程序设计语言,在java中一切皆为对象.在java中创建一个新对象的方式有很多种如new+构造方法,克隆,反射,反序列化等.那么当我们new一个对象时,java底层都经过了怎样 ...

  5. java中不等于怎么表示_java中不等于怎么表示

    java中的不等于,数字之间可以用!=表示,字符串可以用equals方法做比较public class TestA { public static void main(String[] args){ ...

  6. Java中字符串的学习(一)String类的概述及常见方法使用

    转载请注明出处http://www.cnblogs.com/devtrees/p/4347079.html (拓展:Api:编程语言对外给我们提供的应用程序接口.) 一.概述: 我们平时上网发帖,帖子 ...

  7. java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组

    java中常用API: API:Application Programming Interface,应用程序编程接口.Java API是JDK中提供给我们使用的类的说明文档.这些类将底层的代码实现封装 ...

  8. 《C++ Primer 第五版》(第3.5-3.6节) ——C++中的内置数组类型,string对象和C风格字符串

    1.C++中的内置数组类型 C++中的数组是内置数据类型,但不是基础数据类型而是构造数据类型,是有限个相同数据.占据着连续物理存储空间的有序集合.而内置数据类型定义的下标运算符可以处理负值运算(只要在 ...

  9. java中拦截器 过滤器 监听器都有什么区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...

最新文章

  1. reporting Server組件不全引起的致命錯誤
  2. python学生管理系统教学_Python项目:学生信息管理系统(完整版)
  3. vagrant 本地添加box 支持带版本号
  4. 数据结构与算法之复制含有随机指针节点的链表和两个链表相交的一系列问题
  5. 【AAAI 2018】腾讯 AI Lab 11篇论文精选:图像描述、NMT 模型、图卷积神经网络、DNN优化等
  6. VMware的屏幕太小
  7. 智能城市技术能够更好地改善日常生活
  8. Excel 公式 ・快捷键 ------- 不定期更新
  9. 3寸照片尺寸_常见照片尺寸规格
  10. java nio 2_Java NIO2:NIO概述
  11. A4纸网页打印中对应像素的设定和换算
  12. 什么是串口并行,串口接行
  13. 自学编程,他从阿里校招生到高级技术专家
  14. 江苏省基础云计算机服务平台,江苏省一师一优课、一课一名师活动-江苏省基础教育云计算服务平台.doc...
  15. AttacKG: Constructing Technique Knowledge Graph from Cyber Threat Intelligence Reports 源码复现
  16. 5.6.3 分组总计查询
  17. 移动端应用APP的分类(WebApp、HybridApp、 NativeApp)
  18. 新一配:iPod及其配置介绍【转载】
  19. 安装测试包(.ipa)到iPhone手机
  20. python爬虫今日头条_python 简单爬取今日头条热点新闻(

热门文章

  1. Node.js | 一文带你了解 EJS 模板引擎
  2. 单反相机 · 乐趣 · 生活
  3. WinMount V2.2.2, 日期2008.02.29
  4. Java中的Json序列化,不容忽视的getter
  5. The Squared Mosquito Coil dfs
  6. scrapy爬虫之crawlspide爬取豆瓣近一周同城活动
  7. Python 不改变Excel单元格样式—xls和xlsx两种格式
  8. Linux: ------安装JDK、Tomcat、MySQL、Nginx、Tomcat负载均衡集群、Nginx负载均衡策略、MSM配置
  9. 小票打印机切纸两次的问题
  10. cf #634 (Div. 3) E2 - Three Blocks Palindrome (hard version)