1. Java 中的 == 和 equals 有什么区别?比较对象时使用哪一个
1.==
操作符:
用于比较对象的内存 地址(引用是否相同)。
- 对于基本数据类型、
==
比较的是值。(8种基本数据类型) - 对于引用数据类型、
==
比较的是两个引用是否指向同一个内存地址(即对象是否相同)。
2.equals分为两种情况:
- 类没有重写
equals()
方法:通过equals()
比较该类的两个对象时、Object
类的equals()
方法默认行为与==
相同、使用的默认是Object
类equals()
方法。Object
类的equals
方法默认比较的是两个对象的引用是否相同、即它们是否指向同一个内存地址。也就是说 它比较的是两个引用是否指向同一个对象。 - 类重写了
equals()
方法:一般我们都重写equals()
方法来比较两个对象中的属性是否相等。若它们的属性相等、则返回true
(即认为这两个对象相等)。也就是说它会比较两个对象的内容是否相同。例如String
的 equals方法就是比较两个对象的内容是否相同
补充:
Java 中基本数据类型 和引用数据类型的对比表格:
|--------|--------------------------|
| 分类 | 数据类型 |
| 基本数据类型 | byte、short、int、long |
| | float、double |
| | char |
| | boolean |
| 引用数据类型 | String |
| | Array(数组) |
| | Class(类)、Object |
| | 接口、枚举、集合类(如 List、Map, 等) |
📌 区别总结:
-
基本类型 :直接存储数值、存放在栈中、效率高。
-
引用类型 :存储的是对象的引用(地址)、实际对象存在堆中
2. 合并两个有序链表的方法及时间复杂度
今天刚写了 刚好贴一下代码 我决定再写一次
java
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode dummy=new ListNode(0);
ListNode current=dummy;
while(list1!=null && list2!=null){
if(list1.val<=list2.val){
current.next=list1;
list1=list1.next;
}else{
current.next=list2;
list2=list2.next;
}
current=current.next;
}
if(list1!=null){
current.next=list1;
}else{
current.next=list2;
}
return dummy.next;
}
}

时间复杂度:

时间复杂度是 O(m+n)
-
解释一下线程的上下文切换、具体的步骤是什么
-
解释一下进程通信的方式
-
你了解 HTTPS 的握手过程吗
-
单向认证和双向认证有什么区别
-
双端队列与传统的队列有什么区别与优点
8. HTTP 状态码 301 和 302 有什么区别
重定向是数字3开头的状态码。
-
301状态码是代表永久重定向、客户端收到301状态码后、会记忆重定向后的URL地址、这样下一次访问的时候、不需要访问旧URL、直接跳转到新URL访问。
-
302状态码代表临时重定向、客户端收到302状态码后、不会记忆重定向后的URL地址、下一次访问的时候、还需要访问旧URL、再跳转访问新的URL。
分析:
-
301永久重定向、浏览器会记住。假如当你访问a.com时永久重定向到了b.com 那么下一次访问a.com时浏览器会直接跳转到b.com不会再请求a.com。
-
302临时重定向浏览器不会记忆。加入当你访问a.com时临时重定向到了b.com那么下一次当你请求a.com时、浏览器还会先请求a.com,然后再重定向到b.com