天天看點

卷妹帶你回顧Java基礎(一)每日更新Day4

卷妹帶你回顧Java基礎(一)每日更新Day4

👩‍💻部落格首頁:京與舊鋪的部落格首頁

✨歡迎關注🖱點贊🎀收藏⭐留言✒

🔮本文由京與舊鋪原創

😘系列專欄:java學習

👕參考網站:牛客網

💻首發時間:🎞2022年8月7日🎠

🎨你做三四月的事,八九月就會有答案,一起加油吧

🀄如果覺得部落客的文章還不錯的話,請三連支援一下部落客哦

🎧最後的話,作者是一個新人,在很多方面還做的不好,歡迎大佬指正,一起學習哦,沖沖沖

💬推薦一款模拟面試、刷題神器👉​​點選進入網站​​

🛒導航小助手🎪

文章目錄

  • ​​卷妹帶你回顧Java基礎(一)每日更新Day4​​
  • ​​🛒導航小助手🎪​​
  • ​​@[toc]​​
  • ​​1.42 static修飾的類能不能被繼承?​​
  • ​​1.43 static和final有什麼差別?​​
  • ​​1.48 Java反射在實際項目中有哪些應用場景?​​
  • ​​1.49 說一說Java的四種引用方式​​
  • ​​2.1 Java中有哪些容器(集合類)?​​

題幹

請你說說多線程

解題思路

得分點 線程和程序的關系、為什麼使用多線程 标準回答 線程是作業系統排程的最小單元,它可以讓一個程序并發地處理多個任務,也叫輕量級程序。是以,在一個程序裡可以建立多個線程,這些線程都擁有各自的計數器、堆棧、局部變量,并且能夠共享程序内的資源。由于共享資源,處理器便可以在這些線程之間快速切換,進而讓使用者感覺這些線程在同時執行。 總的來說,作業系統可以同時執行多個任務,每個任務就是一個程序。程序可以同時執行多個任務,每個任務就是一個線程。一個程式運作之後至少有一個程序,而一個程序可以包含多個線程,但至少要包含一個線程。 使用多線會給開發人員帶來顯著的好處,而使用多線程的原因主要有以下幾點:

\1. 更多的CPU核心 現代計算機處理器性能的提升方式,已經從追求更高的主頻向追求更多的核心發展,是以處理器的核心數量會越來越多,充分地利用處理器的核心則會顯著地提高程式的性能。而程式使用多線程技術,就可以将計算邏輯配置設定到多個處理器核心上,顯著減少程式的處理時間,進而随着更多處理器核心的加入而變得更有效率。

\2. 更快的響應時間 我們經常要針對複雜的業務編寫出複雜的代碼,如果使用多線程技術,就可以将資料一緻性不強的操作派發給其他線程處理(也可以是消息隊列),如上傳圖檔、發送郵件、生成訂單等。這樣響應使用者請求的線程就能夠盡快地完成處理,大大地縮短了響應時間,進而提升了使用者體驗。 3. 更好的程式設計模型 Java為多線程程式設計提供了良好且一緻的程式設計模型,使開發人員能夠更加專注于問題的解決,開發者隻需為此問題建立合适的業務模型,而無需絞盡腦汁地考慮如何實作多線程。一旦開發人員建立好了業務模型,稍作修改就可以将其友善地映射到Java提供的多線程程式設計模型上。

1.42 static修飾的類能不能被繼承?

參考答案

static修飾的類可以被繼承。

擴充閱讀

如果使用static來修飾一個内部類,則這個内部類就屬于外部類本身,而不屬于外部類的某個對象。是以使用static修飾的内部類被稱為類内部類,有的地方也稱為靜态内部類。

static關鍵字的作用是把類的成員變成類相關,而不是執行個體相關,即static修飾的成員屬于整個類,而不屬于單個對象。外部類的上一級程式單元是包,是以不可使用static修飾;而内部類的上一級程式單元是外部類,使用static修飾可以将内部類變成外部類相關,而不是外部類執行個體相關。是以static關鍵字不可修飾外部類,但可修飾内部類。

靜态内部類需滿足如下規則:

  1. 靜态内部類可以包含靜态成員,也可以包含非靜态成員;
  2. 靜态内部類不能通路外部類的執行個體成員,隻能通路它的靜态成員;
  3. 外部類的所有方法、初始化塊都能通路其内部定義的靜态内部類;
  4. 在外部類的外部,也可以執行個體化靜态内部類,文法如下:
外部類.内部類 變量名 = new 外部類.内部類構造方法();      

1.43 static和final有什麼差別?

參考答案

static關鍵字可以修飾成員變量、成員方法、初始化塊、内部類,被static修飾的成員是類的成員,它屬于類、不屬于單個對象。以下是static修飾這4種成員時表現出的特征:

  • 類變量:被static修飾的成員變量叫類變量(靜态變量)。類變量屬于類,它随類的資訊存儲在方法區,并不随對象存儲在堆中,類變量可以通過類名來通路,也可以通過對象名來通路,但建議通過類名通路它。
  • 類方法:被static修飾的成員方法叫類方法(靜态方法)。類方法屬于類,可以通過類名通路,也可以通過對象名通路,建議通過類名通路它。
  • 靜态塊:被static修飾的初始化塊叫靜态初始化塊。靜态塊屬于類,它在類加載的時候被隐式調用一次,之後便不會被調用了。
  • 靜态内部類:被static修飾的内部類叫靜态内部類。靜态内部類可以包含靜态成員,也可以包含非靜态成員。靜态内部類不能通路外部類的執行個體成員,隻能通路外部類的靜态成員。外部類的所有方法、初始化塊都能通路其内部定義的靜态内部類。

final關鍵字可以修飾類、方法、變量,以下是final修飾這3種目标時表現出的特征:

  • final類:final關鍵字修飾的類不可以被繼承。
  • final方法:final關鍵字修飾的方法不可以被重寫。
  • final變量:final關鍵字修飾的變量,一旦獲得了初始值,就不可以被修改。

擴充閱讀

變量分為成員變量、局部變量。

final修飾成員變量:

  • 類變量:可以在聲明變量時指定初始值,也可以在靜态初始化塊中指定初始值;
  • 執行個體變量:可以在聲明變量時指定初始值,也可以在初始化塊或構造方法中指定初始值;

final修飾局部變量:

  • 可以在聲明變量時指定初始值,也可以在後面的代碼中指定初始值。

注意:被 final 修飾的任何形式的變量,一旦獲得了初始值,就不可以被修改!

1.48 Java反射在實際項目中有哪些應用場景?

參考答案

Java的反射機制在實際項目中應用廣泛,常見的應用場景有:

  • 使用JDBC時,如果要建立資料庫的連接配接,則需要先通過反射機制加載資料庫的驅動程式;
  • 多數架構都支援注解/XML配置,從配置中解析出來的類是字元串,需要利用反射機制執行個體化;
  • 面向切面程式設計(AOP)的實作方案,是在程式運作時建立目标對象的代理類,這必須由反射機制來實作。

1.49 說一說Java的四種引用方式

參考答案

Java對象的四種引用方式分别是強引用、軟引用、弱引用、虛引用,具體含義如下:

  • 強引用:這是Java程式中最常見的引用方式,即程式建立一個對象,并把這個對象賦給一個引用變量,程式通過該引用變量來操作實際的對象。當一個對象被一個或一個以上的引用變量所引用時,它處于可達狀态,不可能被系統垃圾回收機制回收。
  • 軟引用:當一個對象隻有軟引用時,它有可能被垃圾回收機制回收。對于隻有軟引用的對象而言,當系統記憶體空間足夠時,它不會被系統回收,程式也可使用該對象。當系統記憶體空間不足時,系統可能會回收它。軟引用通常用于對記憶體敏感的程式中。
  • 弱引用:弱引用和軟引用很像,但弱引用的引用級别更低。對于隻有弱引用的對象而言,當系統垃圾回收機制運作時,不管系統記憶體是否足夠,總會回收該對象所占用的記憶體。當然,并不是說當一個對象隻有弱引用時,它就會立即被回收,正如那些失去引用的對象一樣,必須等到系統垃圾回收機制運作時才會被回收。
  • 虛引用:虛引用完全類似于沒有引用。虛引用對對象本身沒有太大影響,對象甚至感覺不到虛引用的存在。如果一個對象隻有一個虛引用時,那麼它和沒有引用的效果大緻相同。虛引用主要用于跟蹤對象被垃圾回收的狀态,虛引用不能單獨使用,虛引用必須和引用隊列聯合使用。

2.1 Java中有哪些容器(集合類)?

參考答案

  • Set代表無序的,元素不可重複的集合;
  • List代表有序的,元素可以重複的集合;
  • Queue代表先進先出(FIFO)的隊列;
  • Map代表具有映射關系(key-value)的集合。