首页 > 分享 > Java:String类型比较,equals和==比较的区别

Java:String类型比较,equals和==比较的区别

最新推荐文章于 2024-10-11 18:30:53 发布

飞翔的代码猪 于 2019-04-16 22:53:25 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

String使用"=="操作符的作用

用于基本数据类型的比较判断引用是否指向堆内存的同一块地址。

String的equals方法
equals方法在Object类当中,而Object是所有类的父类

public boolean equals(Object obj) { return (this == obj);} 123

而String对equals方法进行了重写。

public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = count;if (n == anotherString.count) {char v1[] = value;char v2[] = anotherString.value;int i = offset;int j = anotherString.offset;while (n– != 0) {if (v1[i++] != v2[j++])return false;}return true;}}return false; }

1234567891011121314151617181920212223 解释:它首先判断的是两个对象的引用是否指向同一内存地址,是的话就返回true ,否则继续往下走,往下走时,判断是否为String类的对象,然后比较两个字符串的长度和内存,当都相等的时候就返回true ,否则返回false。

equals的作用:

用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型

equals的基本使用:

boolean b = obj1.equals(obj2);
String类型比较不同对象内容是否相同,应该用equals,因为==用于比较引用类型和比较基本数据类型时具有不同的功能。

String作为一个对象来使用

例子一:对象不同,内容相同,"=="返回false,equals返回true

String s1 = new String("java"); String s2 = new String("java"); System.out.println(s1==s2); //false System.out.println(s1.equals(s2)); //true 12345

例子二:同一对象,"=="和equals结果相同

String s1 = new String("java"); String s2 = s1; System.out.println(s1==s2); //true System.out.println(s1.equals(s2)); //true 12345

String作为一个基本类型来使用

如果值不相同,对象就不相同,所以"==" 和equals结果一样

String s1 = "java"; String s2 = "java"; System.out.println(s1==s2); //true System.out.println(s1.equals(s2)); //true 12345

String池:

String是不可改变的,为了进步效率Java引用了字符串池的概念,例如new String(“abc”);首先会在String池中创建一个对象“abc”由于有NEW的存在所以会分配地址空间,复制String池的内容。当出现的String对象在String池中不存在时即在String池中创建该对象。

String对象的理解

如果String缓冲池内不存在与其指定值相同的String对象,那么此时虚拟机将为此创建新的String对象,并存放在String缓冲池内。

如果String缓冲池内存在与其指定值相同的String对象,那么此时虚拟机将不为此创建新的String对象,而直接返回已存在的String对象的引用。

Java中,只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。

使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个。

相关知识

Java 中的“==”和equals()方法比较总结。
java 中equals和==的区别
Scala中的==与equals
== 与equals()的区别
《JAVA语言程序设计》期末考试试题及答案
借花献佛!朋友干了5年整的Java面试官,给我分享了一份面试官最爱问的Java面试题
String的存储方式
基于Java网上花店系统设计实现(源码+部署文档)
Java扑克牌小程序
java中如何实现支付宝接口

网址: Java:String类型比较,equals和==比较的区别 https://m.huajiangbk.com/newsview1354220.html

所属分类:花卉
上一篇: python鸢尾花分类svm测试
下一篇: 给闺蜜送的花种类有啥 送闺蜜几朵