java equals与==区别

java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
  他们之间的比较,应用双等号(==),比较的是他们的值。
2.复合数据类型(类)
  当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
  对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

时间: 2024-09-30 01:27:43

java equals与==区别的相关文章

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

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

java中,==跟equals的区别

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

Java杂谈之String----"=="与equals的区别

在程序代码的编写中,经常涉及到两个字符串的比较 这个时候一般困惑我们的是"=="和equals方法的取舍问题,实际上,只要明白了这两者 比较的区别,我们就能够正确的选择出到底采用哪种方式进行字符串的比较了 首先我们定义两个字符串 String s1 = "hello"; String s2 = new String("hello"); 这两个都建立了"hello"的字符串,但到底有什么不同呢 注意,Java中没有指针的概念,这

java中的==和equals的区别

关于JAVA中的==和equals函数的区别 今天在研读Thinking in java 时注意到==和equals的区别,于是就通过查看JDK_API才读懂了他们的区别,于是将心得分享一下,望批评指正,谢谢. 在JAVA程序中一般的基本类型(值类型int,double,boolean等)都只能通过 = = 来判断值是否相等. 如:System.out.println(1==1);System.out.println(true==true);√ 不能写成System.out.println(1.

java 堆栈的区别

java有两种内存管理:堆 和 栈. 栈中保存的是基本数据类型(如:int.short.char.long等)与对象句柄. 栈中保存的内存在变量超出作用域后会被自动释放. 栈的存取速度比堆快,数据可以共享,但是不灵活. 举个例子: int i = 5: int j = 5; String s1 = "abc"; String s2 = "abc"; 其中 i 和 j ,s1 和 s2在栈中保存的数据是共享的.也就是说改变过其中一个变量的值,另外一个变量的值也会被相应

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

什么理论也先不说,代码先给大家看下: 接下来:用一句话总结==和equals的区别 ==号比较的是内存地址 || equals()比较的是字符串的内容 解析: A ==操作符专门用来比较两个变量的值是否相同,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等       只能用==操作符. B equals方法用来比较两个独立对象的内容是否相同,两条new语句创建了两个对象,然后用s3,s4两个变量分别指向其中的一个对象,这是两个不同的对象,它们

写这篇博客之前,我又忘了“==”和equals的区别。

没错.嘟嘟又把==号和equals 的区别给忘掉了 ==号比较基本类型的时候比的是值,比较引用类型的时候比较的是地址.equals比较基本类型的时候.... 脑子里关于这道题的答案好模糊好没有安全感 但是请相信,看完嘟嘟这篇文章保证让你记住至少一年.记不住一年算我输. 首先==号是人家java设计之初定好的,不可能改的,更何况第一句话很好理解.就硬记吧. 至于有些人说是怎么比较基本类型的(就是关于常量池,堆内存那块的东西)嘟嘟以后有缘再研究一下.毕竟面向目的编程才是嘟嘟现在的首要目标. 然后咱们

《面试经典系列》- 从底层理解==和equals的区别

前言 在我们Java面试中,基础知识基本上比定会考核的点,而“==和equals的区别”则是面试官最喜欢.最经常问的问题. 但我们看了不少的文章.解释,总是一头雾水.一知半解的,往往很容忘记.今天,我带大家从底层去深入理解这两个玩意的区别,相信下次面试官再问的时候,肯定能镇住面试官. 一.初始“==”的含义 在Java中,“==”的作用主要有两个: 1.基础数据类型:比较的是两者的值是否相等,比如两个 int 类型的变量,比较的是变量的值是否相等. 2.引用数据类型:比较的是引用地址是否相同,比

==与equals的区别

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