面试--==和equals、String\

本文探讨了Java中equals方法与==运算符的区别,包括它们如何比较对象以及String类型的特殊性。此外,还深入分析了HashSet的工作原理及其底层实现,并讨论了多态的概念和实现。

1.==和equals的区别

==比较的是内存中的地址值
equals看有没有重写其中的hashcode的方法
看有没有重写其中的hashcode和equals方法
如果只重写的是equals的方法的话比较的是其中的地址值的比较
然后equals的输出即为true
然后重写了hashcode的方法之后输出两种类型的size的比较的值是相同的
然后输出的结果即为1
String类型的比较特殊、比较的时候进行的是char层级的比较
比较的是每个字符、因此String类型的equals方法比较的是字符串的长度以及大小


——String

常量找池变量找堆
String类型先在常量池中生成的一个对象
然后再堆;里面进行的寻找的对象
一般的创建对象的方式是:“
String s1 = "123";
上面的创建的方式是再池中进行的创建创建的时一个对象
String s2 = new String("123");
创建的是两个对象
首先创建的是在常量池中创建的一个对象
然后再堆中创建的一个引用的对象有指针进行的指向的操作
所以说创建的是两个对象

2、hashset底层的实现是new出来的hashmap的方法

因此


present是一个长常量new出来的Object的对象

——多态(理解。。。)

——Java中通过方法的重载和方法的重写是多态的体现

方法重载不是多态的体现
方法重写才是多态的体现
override
overload
没有父类的继承或者接口的体现是实现不了多态的

——多态是编译期的行为还是运行期的行为

多态一定是运行时的行为
多态加反射+设计模式
就是Sprig的前身
### Java 中 `==` `equals()` 方法的区别 在 Java 编程语言中,`==` 操作符 `equals()` 方法用于不同的场景来比较两个实体。 对于基本数据类型,`==` 比较的是数值上的相等性。例如: ```java int a = 1; double b = 1.0; System.out.println(a == b); // 输出 true ``` 当涉及引用类型的比较时,情况有所不同。`==` 对于引用类型会检查两个引用是否指向同一个内存位置,即它们是否是指向同一对象的引用[^3]。 而 `equals()` 方法则更为灵活,默认情况下它继承自 `Object` 类,并且行为类似于 `==`,但是许多标准库类(比如 `String`, `Integer` 等)已经重写了此方法以便能够基于实际内容来进行有意义的对象间对比[^4]。 考虑如下例子展示两者的差异: ```java // 使用字符串作为演示 String str1 = new String("hello"); String str2 = new String("hello"); System.out.println(str1 == str2); // false, 不同实例 System.out.println(str1.equals(str2)); // true, 内容相同 ``` 值得注意的是,在尝试调用像整数这样的原始类型上调用 `.equals()` 将导致编译错误,因为这些类型不是对象也没有定义该方法[^2]。 因此,在编写代码时应当注意区分何时应该使用哪一个操作符或函数,以确保程序按预期工作。 #### 总结 - **`==`:** - 基本数据类型:比较值。 - 引用类型:比较地址/引用。 - **`.equals()`:** - 默认实现如同 `==` (针对引用),但对于某些类已被改写为更合理的语义上的一致性测试。 - 应用于需要关注内部状态而非物理身份的情况。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Diligently_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值