java基礎

   1  最終類就是被final修飾的類,最終方法就是被final修飾的方法。最終類不能被繼承,最終方法不能被重寫

    2 : 抽象類和最終類都可以被聲明使用:

 “向上轉型

1、父類類型引用指向子類對象

2、 接口類型引用引用指向該接口實現類的對象、

抽象類不能被實例化 

final類,不希望被繼承 被修改 被擴展      final()方法可以被繼承 但不能被覆蓋

  • Volatile:與鎖相比,Volatile 變量是一種非常簡單但同時又非常脆弱的同步機制,它在某些情況下將提供優於鎖的性能和伸縮性。如果嚴格遵循 volatile 的使用條件 —— 即變量真正獨立於其他變量和自己以前的值 —— 在某些情況下可以使用 volatile 代替 synchronized 來簡化代碼。然而,使用 volatile 的代碼往往比使用鎖的代碼更加容易出錯。

 volatile 變量提供理想的線程安全,必須同時滿足下面兩個條件:1:對變量的寫操作不依賴於當前值 2:該變量沒有包含在具有其它變量的不變式中。

3:

識別合法的構造方法;
  1:構造方法可以被重載,一個構造方法可以通過this關鍵字調用另一個構造方法,this語句必須位於構造方法的第一行;
    重載:方法的重載(overload):重載構成的條件:方法的名稱相同,但參數類型或參數個數不同,才能構成方法的重載。  

  2 當一個類中沒有定義任何構造方法,Java將自動提供一個缺省構造方法;
  3 子類通過super關鍵字調用父類的一個構造方法;
  4 當子類的某個構造方法沒有通過super關鍵字調用父類的構造方法,通過這個構造方法創建子類對象時,會自動先調用父類的缺省構造方法
  5 構造方法不能被static、final、synchronized、abstract、native修飾,但可以被public、private、protected修飾;
  6 構造方法不是類的成員方法;

  7 構造方法不能被繼承

4:

volatile與synchronized的區別:
volatile本質是在告訴jvm當前變量在寄存器中的值是不確定的,需要從主存中讀取,synchronized則是鎖定當前變量,只有當前線程可以訪問該變量,其他線程被阻塞住.
volatile僅能使用在變量級別,synchronized則可以使用在變量,方法.
volatile僅能實現變量的修改可見性,但不具備原子特性,而synchronized則可以保證變量的修改可見性和原子性.
volatile不會造成線程的阻塞,而synchronized可能會造成線程的阻塞.
volatile標記的變量不會被編譯器優化,而synchronized標記的變量可以被編譯器優化.

5:forward()和redirect()

1.從地址欄顯示來說
forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器.瀏覽器根本不知道服務器發送的內容從哪裏來的,所以它的地址欄還是原來的地址.
redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是新的URL.

2.從數據共享來說
forward:轉發頁面和轉發到的頁面可以共享request裏面的數據.
redirect:不能共享數據.

3.從運用地方來說
forward:一般用於用戶登陸的時候,根據角色轉發到相應的模塊.
redirect:一般用於用戶註銷登陸時返回主頁面和跳轉到其它的網站等.

4.從效率來說
forward:高.
redirect:低.




發佈了30 篇原創文章 · 獲贊 2 · 訪問量 9113
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章