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. 合并兩個有序鏈表的方法及時間復雜度
今天剛寫了 剛好貼一下代碼 我決定再寫一次
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)
3. 解釋一下線程的上下文切換、具體的步驟是什么
4. 解釋一下進程通信的方式
5. 你了解 HTTPS 的握手過程嗎
6. 單向認證和雙向認證有什么區別
7. 雙端隊列與傳統的隊列有什么區別與優點
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