关于"equals" &" =="异同
String 不是 Java 中的一个基本类型 它是一个 类。这一点从它的开头大写 S 就可以大致看出来
在 Java 中 比较有两种方式 == 和 equals()
== 比较的是 两个实例的内存地址
equals() 比较的是 两个实例的各属性值是否完全相等
equals() 是从 Object() 继承来的 也就是说每一个 对象都有这个 equals()
但是如果没有被覆盖的话 equals() 默认也是比较 内存地址, 和 == 一样
String str1=new String("Hi Mom");和
String str2=new String("Hi Mom");
分别创建了两个不同的 String 实例, 在内存中分配了不同的地址
所以 用 == 比较得到的结果是 false
String str3=str1;
设一句执行后 把 str1 的地址 传给了 str3
这时 str1 和 str3 都指向同一块内存
所以 用 == 比较得到的结果是 true
要说明的是 如果你这样写:
String str1 = "Hi Mom"
String str2 = "Hi Mom"
那么编译器会 很聪明的只创建 一个实例 而让 str1 和 str2 都指向这个地址
所以这时 str1 == str2 就会返回 true
Java中的“=”是赋值的意思
对于 基本类型 赋过去的是 一个值
对于 对象来说 赋过去的是 这个对象实例的地址
(需要说明的是 为了 阐述清楚 用了 地址 一词 但是在 Java 里 没有地址的说法 应叫做 引用)
(注:转自寒夜孤星)
分享到:
相关推荐
JavaSE/docx JavaSE 是 Java 标准版,涵盖...* equals 和 == 的异同点 * Integer 和 int 的区别 * String、StringBuffer 和 StringBuilder 的异同 * Java 数组与集合的比较 * ArrayList 与 LinkedList 的比较存储结构
可以读取两个Excel文件到DataFrame,然后使用DataFrame的`equals()`或`compare()`函数进行比较。若需要考虑样式、公式等细节,可以使用openpyxl库逐个单元格比较。 3. **Java**:Apache POI是Java处理Office文档的...
Java入门-Java学习路线扩展课程:equals的使用源码。 如有问题或好的建议,请与我联系!博客地址为:https://blog.csdn.net/atgfg/article/details/102576039
77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class ...
### 单值类型集合List与Set的异同分析 #### 集合概述 在Java编程语言中,集合框架提供了一系列用于存储和操作一组对象的数据结构。这些集合类按照其特性可以大致分为两大类:单值类型集合和多值类型集合。本篇文章...
在核心篇中,深入讨论了数据存储相关的知识点,包括MySQL的JDBC流程,MVC设计思想,以及equals与==的区别。探讨了集合框架中List、Set、Map的使用与区别,包括ArrayList与LinkedList、HashMap与Hashtable、HashSet与...
Java 和 JavaScript 是两种不同的编程语言,虽然它们的名字相似,但有着本质的区别。Java是由Sun Microsystems(现已被Oracle公司...在学习和使用过程中,理解它们的异同,能够提升我们的技术水平和解决问题的能力。
16、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 17、是否可以继承String类? 18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,...
25.请详述在dotnet中类(class)与结构(struct)的异同? 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户...
`equals`方法默认也是比较地址,但可以通过重写使其比较对象内容的相等性。 **12. 静态变量和实例变量的区别?** - **答案:** 静态变量属于类级别,所有实例共享同一份;实例变量属于对象级别,每个实例有自己的...
根据给定的信息,本文将对`String`与`StringBuffer`在Java中的使用进行详细的解析与对比,并结合实例深入分析二者的异同及其适用场景。 ### `String` 和 `StringBuffer` 的基本概念 #### `String` 在Java中,`...
2、请详述在dotnet中类(class)与结构(struct)的异同:(10分) 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. 3、根据委托(delegate)的知识,请完成以下用户...
10. **抽象类和接口的异同**: - **抽象类**:可以包含抽象方法(没有实现的方法)和非抽象方法,以及成员变量。 - **接口**:只能包含抽象方法和常量,默认方法(从Java 8开始支持)。一个类可以实现多个接口,但...
11、"=="和equals方法究竟有什么区别? 12 12、静态变量和实例变量的区别? 13 13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math....
两个对象值相同(x.equals(y) ==true),但却可有不同的hash code,这句话对不对?(等级1级) 15. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递...
5. 接口与抽象类的异同: - 抽象类可包含非抽象方法,接口只能有公共抽象方法。 - 抽象类成员变量可以是任意类型,接口只能是public static final类型。 - 类只能单继承抽象类,但能实现多个接口。 6. final...
69、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的...
- **ArrayList与LinkedList异同**:ArrayList基于动态数组,访问速度快,插入和删除慢;LinkedList基于双向链表,插入和删除快,访问慢。 - **ArrayList与Vector区别**:Vector线程安全,每个方法都加了...
10. **抽象类与接口的异同**: - 抽象类可以有构造器,接口则不能。 - 抽象类可以包含抽象方法和非抽象方法,接口只能有抽象方法。 - 抽象类成员权限可变,接口成员默认为 public。 - 抽象类可以定义成员变量,...