java的equlas()方法与==运算符浅析
来源:互联网 发布:怎么看mac系统版本 编辑:程序博客网 时间:2024/05/20 19:29
最近一直在使用字符串判断以及对象判断,但总是出现各种各样的问题,代码经常莫名奇妙的出现判断条件失误的情况。这次就好好的总结下这个equal()和==运算符号的差异。
总结的来说。==运算符是用来判断两个引用变量是否指向同一个对象。(毫无疑问)
equal是用来判断两个变量所引用的值是否相等。(这个定义其实不准确,下面会讲。)
1、==运算符
这个不用多说,判断两个引用变量是否指向同一个对象。
String str1="JACK";String str2="JACK";
String str3=new String("JACK");
String str4=new String("JACK");
System.out.println(str1==str2);//输出true
System.out.println(str1==str3);//输出false
System.out.println(str4==str3);//输出false
这里String str1="JACK";String str2="JACK"; 这两个变量指向的"JACK",是存放在常量池中的,JVM常量池保证相同的字符串直接量只有一个,不会产生多个副本。,并且在代码的编译期就已经确定好了,因此str1与str2都引用常量池中的同一个字符串对象。
而str3,str4指向的字符串对象,是保存在堆内存中的。
当使用new String("JACK"),这种方式时,JVM首先会使用常量池来保存管理”JACK“直接量,再调用String类的构造器来创建一个新的String对象,新创建的String对象被保存在堆内存中。也就是说new String(”JACK“)一共产生了两个字符串对象。
2、equal()方法
很多资料上说equals()方法是判断两个对象的值相等,这个说法并不准确。实际上,重写equals()方法就是提供自己的判断标准。
equals():是Object类提供的一个实例方法,因此所有的引用变量都可以调用该方法来判断是否与其他的变量相等。但这时使用这个方法判断两个对象相等的标准与使用==运算符没有区别,同样要求两个引用变量指向同一个对象才会返回true。所以这个Object类提供的equals()方法没有太大的实际意义,所以需要重写。
但是String类已经重写了Object类的equal()方法,String的equals方法判断两个字符串相等的标志是:只要两个字符串包含的字符序列相同,通过equal()比较将返回true,否则返回false。
阅读全文
0 0
- java的equlas()方法与==运算符浅析
- Java中==与equlas的区别
- java中的“==”与equlas的区别
- Java中 == 和 equlas() 的区别
- JavaSE equlas和==的区别
- Integer中equlas()方法的运用与问题总结
- 重写equlas()方法的规则
- 【学习心得】-小思JAVA中“equlas”与“==”在判断语句中的不同
- java——==、equlas和null
- hashcode和equlas、==的一些区别
- Java ==运算符与equals方法的区别及intern方法的正确使用
- java中string对象的”equal“方法和“==”运算符 与 c#中的比较
- Java SE String的equals方法与"=="的区别浅析
- equals( )方法与 == 运算符的用法比较
- “==”运算符与equals方法的区别
- “==”运算符与equals()方法的区别
- ==运算符与equals方法
- java中的比较运算符== 与 equals()方法
- 大数据预科20(补充之网络编程)
- ajax,json学习笔记(二)XMLHttpRequest对象
- python数据可视化系列教程——matplotlib绘图全解
- 洛谷P1060 开心的金明
- DateBase-事务
- java的equlas()方法与==运算符浅析
- 第三次作业P141
- 初识c++类(笔记)
- 私有云落地解决方案之网络篇-关键技术-DHCP地址-1
- Python 余弦相似性应用
- BroadcastReceiver
- 1072企业产值
- Spring中Bean的生命周期
- 洛谷P1926 小书童——刷题大军