==和equals的区别案例+解析

什么理论也先不说,代码先给大家看下:

  

接下来:用一句话总结==和equals的区别

  ==号比较的是内存地址  ||  equals()比较的是字符串的内容

解析:

  A  ==操作符专门用来比较两个变量的值是否相同,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等
       只能用==操作符。

  B  equals方法用来比较两个独立对象的内容是否相同,两条new语句创建了两个对象,然后用s3,s4两个变量分别指向其中的一个对象,这是两个不同的对象,它们的

  首地址是不同的,就是说s3,s4中存储的数值是不同的,所以表达式s3==s4将返回false,而两个对象中的内容是相同的,所以s3.equals(4)返回了true。

  【字符串的比较基本上都是使用equals方法。
          如果一个类没有自己定义的equals方法,那么ta将继承Object类的equals方法,Object类的的实现代码如下:
        boolean equals(Object o)
        {
            return this==o;
        }

    这说明如果一个类没有自己定义的equals方法,ta默认的equals方法,等同于使用==操作符,也就是比较两个变量指向的对象是同一个对象。这时候使用equals和==
    会得到相同的结果!!s1==s2和s1.equals(s2)都是true。如果希望写的类能够比较两个实例对象的内容是否相同,则需要覆盖equals方法!!

    】

最后总结:

  1.对于基本数据类型,只有==,没有equals()(注意String类型不是基本数据类型),所以很明显值相等就为true。
  2.对于字符串,==指比较两者的内存地址,equals()则重写了Object类的equals(),比较的是内容,你可以查看API看看它怎么重写的。对于字符串是存放在方法区的字符串常量池里的,无论定义多少,只要字符串值相等都指同一块内存地址,所以==和equals()结果没区别。
  3.对于实例对象而言,==比较的依然是内存地址(所以你可以看出无论什么情况,==一直比较的都是内存地址),而equals()默认重写Object类的equals()方法(比较地址)。但是一般我们会自己重写equals(),让它比较值是否相等。
  4.建议:学完“内存地址”和“重写”的内容,再回过头来看这一知识点。

附加总结:

而java的8大基本数据类型分别是:
  数据类型   大小 范围 默认值
  byte(字节)   8 -128 - 127 0
  shot(短整型)  16 -32768 - 32768 0
  int(整型)   32 -2147483648-2147483648 0
  long(长整型) 64 -9233372036854477808-9233372036854477808 0
  float(浮点型) 32 -3.40292347E+38-3.40292347E+38 0.0f
  double(双精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d
  char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
  boolean(布尔型) 1 true/false false

分类为:
  逻辑类 boolean
  文本类 char
  整数类 byte, short, int, long
  浮点类 double, float。

String是最基本的数据类型吗?
  String类并不是基本数据类,而是一个类(class),是C++、java等编程语言中的字符串。String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。     String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。
好了,这个知识点就总结到这里吧,小编在走之前,把上面的代码给大家粘贴过来吧,这省了部分人不少时间...哈哈

public static void main(String[] args) {
        String s1 = "Java";
        String s2 = "Java";
        String s3 = new String("Java");
        String s4 = new String("Java");
        //1、==两个字符串@新建对象之前比较
        System.out.println("s1==s2:"+(s1==s2));
        //2、==字符串与新建对象比较
        System.out.println("s1==s3:"+(s1==s3));
        //3、==两个字符串@新建对象之后比较
        System.out.println("s3==s4:"+(s3==s4));
        //1、equals两个字符串@新建对象之前比较
        System.out.println("s1.equals(s2):"+(s1.equals(s2)));
        //2、equals字符串与新建对象比较
        System.out.println("s1.equals(s3):"+(s1.equals(s3)));
        //3、equals两个字符串@新建对象之后比较
        System.out.println("s3.equals(s4)"+(s3.equals(s4)));
    }

时间: 2024-11-10 12:41:06

==和equals的区别案例+解析的相关文章

《高性能SQL调优精要与案例解析》一书谈主流关系库SQL调优(SQL TUNING或SQL优化)核心机制之——索引(index)

继<高性能SQL调优精要与案例解析>一书谈SQL调优(SQL TUNING或SQL优化),我们今天就谈谈各主流关系库中,占据SQL调优技术和工作半壁江山的.最重要的核心机制之一——索引(index).我们知道,<高性能SQL调优精要与案例解析>一书中也再三强调索引对SQL调优的重要性,可是上篇文章中也谈到,只看案例和解决问题的具体方法,而不掌握SQL调优的基础知识,是没有用的,我们必须做到知其然,更要知其所以然,才能做到融会贯通,活学活用,进而将SQL调优技术掌握到炉火纯青的地步.

==与equals的区别

==与equals的区别 == 可以比较基本数据类型,也可以比较引用数据类型: 比较基本数据类型,比较的是值是否相等: 比较引用数据类型,比较的是地址值是否相等 equals 只能比较引用数据类型, 默认情况下比较的是地址值是否相同: 如果相比较内容,就必须重写Object类的equals()方法

Java中字符串比较时==和equals的区别

==是比较两个字符串引用的地址是否相同,即是否指向同一个对象,而equals方法则比较字符串的内容是否相同. 例如String a = "abc"; String b = "abc"; a == b返回true,a.equals(b)同样返回true,这是为什么呢? 原来程序在运行时有一个字符串池,创建字符串时会先查找池中是否有相应的字符串,如果已经存在的话只需把引用指向它即可,如果没有则新建一个. 上例中创建a时,会在字符串池中首先创建一个"abc&qu

SPSS-相关性和回归分析(一元线性方程)案例解析

任何事物和人都不是以个体存在的,它们都被复杂的关系链所围绕着,具有一定的相关性,也会具备一定的因果关系,(比如:父母和子女,不仅具备相关性,而且还具备因果关系,因为有了父亲和母亲,才有了儿子或女儿),但不是所有相关联的事物都具备因果关系. 下面用SPSS采用回归-线性分析的方式来分析一下:居民总储蓄 和 "居民总消费"情况是否具备相关性,如果具备相关性,那相关关系的密切程度为多少. 下面以"居民总储蓄"和"居民总消费"的调查样本做统计分析,数据如

《Web渗透技术及实战案例解析》pdf

下载地址:网盘下载 内容简介 编辑 本书从Web渗透的专业角度,结合网络安全中的实际案例,图文并茂地再现Web渗透的精彩过程.本书共分7章,由浅入深地介绍和分析了目前网络流行的Web渗透攻击方法和手段,并结合作者多年的网络安全实践经验给出了相对应的安全防范措施,对一些经典案例还给出了经验总结和技巧,通过阅读本书可以快速掌握目前Web渗透的主流技术.本书最大的特色就是实用和实战性强,思维灵活.内容主要包括Web渗透必备技术.Google黑客技术.文件上传渗透技术.SQL注入.高级渗透技术.0day

XML与HTML区别,XML解析

1.XML与HTML的区别 XML 不是对 HTML 的替代 ,XML 是对 HTML 的补充. XML 不会替代 HTML,理解这一点很重要.在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据. 对 XML 最好的描述是:XML 是独立于软件和硬件的信息传输工具. 比较内容 HTML XML   可扩展性 不具有扩展性 是元标记语言,可自定义新的标记 作用 焦点是数据的外观,旨在显示信息 被设计来传输和存储数据,焦点是数据的内容 语法要求 不要求标记的嵌套.

java中,==跟equals的区别

在java中,经常有一些刚入行的新手分不清==跟equals的区别.==操作符是专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或者两个变量是否相等,只能用==操作符.如果一个变量指向的数据是对象类型,这时候就涉及了两块内存,对象本身占用已快内存,变量本身也占用一块内存,例如:Object obj = new Object();中,变量obj是一个内存,new Object();是另一个内存.此时,变量obj所对应的内存中存储的数值

第16本:《视觉繁美:信息可视化方法与案例解析》

第16本:<视觉繁美:信息可视化方法与案例解析> 阅读加写笔记大概用了6个小时.<视觉繁美>是从权哥的QQ上发现的,看到一堆超炫超 复杂的图形,就马上动手从amazon上买了下来.第一天粗翻一遍,确实是非常多.非常复杂的网络图,如果不是搞艺术设计的,真不知道这本书有什么用,但 第二天开始仔细阅读,发现前三章还是相当有料,从树状模型开始,过渡到网络模型,然后仔细剖析了网络模型,第四.五.六章可以说是网络图欣赏,第七章是4 篇论文. 第一章 生命之树 树状模型是当代网络图的源头.古代把

COUNTIF函数应用案例解析

COUNTIF函数应用案例解析 COUNTIF函数主要目的是用于统计某个区域中,满足给定条件的单元格的个数. 一.COUNTIF函数的基本用法: 1.条件为"常量"的情况: 下列例子中,将统计"部门"属于"财务部"的人数: 如上图中,COUNTIF的参数是: 2.条件可以为表达式: 计算工资">=1500"的人数有多少,公式如下. 3.表达式中调用单元格引用或使用函数 COUNTIF(C2:C8,">=&