== 与 equals 的区别

今天跟开发修复一个bug,现在列出来这个绕口的比较

场景一:

Long a = 1;

Long b = 1;

boolean result = (a == b); //此时result的值为false

boolean result2 = (a.equals(b)); //此时result2的值为true

boolean result3 = (a.longValue()== b.longValue()); //此时result3的值为true

场景二:

long c = 2;

long d = 2;

boolean result = (c == d); //此时result的值为true

boolean result2 = (c.equals(d)); //此时的result2的值为true

引申一下String和StringBuilder

String占用栈空间,每次赋值都会开辟一个新的空间;StringBuilder是对象,在堆里面一直占用同一个空间。

时间: 2024-10-26 13:35:06

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

==与equals的区别

==与equals的区别 == 可以比较基本数据类型,也可以比较引用数据类型: 比较基本数据类型,比较的是值是否相等: 比较引用数据类型,比较的是地址值是否相等 equals 只能比较引用数据类型, 默认情况下比较的是地址值是否相同: 如果相比较内容,就必须重写Object类的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中没有指针的概念,这

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

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

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.

==和equals的区别

== 和 Equals 的区别 1. == 是一个运算符. 2.Equals则是string对象的方法,可以.(点)出来. 我们比较无非就是这两种 1.基本数据类型比较 2.引用对象比较 1.基本数据类型比较 ==和Equals都比较两个值是否相等.相等为true 否则为false: 2.引用对象比较 ==和Equals都是比较栈内存中的地址是否相等 .相等为true 否则为false: 需注意几点: 1.string是一个特殊的引用类型.对于两个字符串的比较,不管是 == 和 Equals 这

“==”与equals的区别

"=="与equals的区别: "==":两个对象比较的是对象的引用地址比较,对象的hashCode值是对象的引用地址,只有两个对象的hashCode值一样,此比较符才会返回true,否则即使两个对象的相同也会返回false. equals:值的比较,即基本类型的变量值一样或两个不同对象的域值一样即可返回true,否则返回false,不会比较hashCode值是否一致. 备注:String类型变量比较特殊,可以使用equals或"=="比较是否相

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

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

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

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