java基礎部分總結2
匿名內部類:
匿名類沒有類名,所以匿名類不能有構造器
匿名內部類的建立格式為: new 父類構造器(引數列表)|實現介面(){
//匿名內部類的類體實現
}
使用匿名內部類時,必須繼承一個類或實現一個介面
匿名內部類由於沒有名字,因此不能定義建構函式
匿名內部類中不能含有靜態成員變數和靜態方法
匿名內部類,匿名了,沒名字,構造器去哪找名字,即不能有建構函式
StringBuffer和StringBuilder
效率:StringString(大姐,出生於JDK1.0時代) 不可變字元序列 StringBuffer(二姐,出生於JDK1.0時代) 執行緒安全的可變字元序列 StringBuilder(小妹,出生於JDK1.5時代) 非執行緒安全的可變字元序列
Java中的String是一個類,而並非基本資料型別。string是值傳入,不是引用傳入。
String 不可變類 StringBuffer 可變類 執行緒安全
1.”is”說明後面的內容都會被強制轉換為string,所以是最後結果是拼接起來的
2.100+5先得到105,然後與is拼接
3.先算括號內的
繼承具有傳遞性,子類可以無條件向上轉型!
A.java用來執行一個.class檔案
B.javadoc用來生成api文件
C.jar用來生成jar包
D.javac用來把.java檔案編譯為.class檔案
兩個最基本的java回收演算法:複製演算法和標記清理演算法
複製演算法:兩個區域A和B,初始物件在A,繼續存活的物件被轉移到B。此為新生代最常用的演算法
標記清理:一塊區域,標記要回收的物件,然後回收,一定會出現碎片,那麼引出
標記-整理演算法:多了碎片整理,整理出更大的記憶體放更大的物件
兩個概念:新生代和年老代
新生代:初始物件,生命週期短的
永久代:長時間存在的物件
整個java的垃圾回收是新生代和年老代的協作,這種叫做分代回收。
P.S:Serial New收集器是針對新生代的收集器,採用的是複製演算法
Parallel New(並行)收集器,新生代採用複製演算法,老年代採用標記整理
Parallel Scavenge(並行)收集器,針對新生代,採用複製收集演算法
Serial Old(序列)收集器,新生代採用複製,老年代採用標記整理
Parallel Old(並行)收集器,針對老年代,標記整理
CMS收集器,基於標記清理
G1收集器:整體上是基於標記 整理 ,區域性採用複製
綜上:新生代基本採用複製演算法,老年代採用標記整理演算法。cms採用標記清理。
陣列的定義:
陣列命名時名稱與[]可以隨意排列,但宣告的二維陣列中第一個中括號中必須要有值,它代表的是在該二維陣列中有多少個一維陣列。
內部類和外部類:
對於外部類來說,只有兩種修飾,public和預設(default),因為外部類放在包中,只有兩種可能,包可見和包不可見。
對於內部類來說,可以有所有的修飾,因為內部類放在外部類中,與成員變數的地位一致,所以有四種可能。
Static
被static修飾的會預設初始化,int就是0咯
this不能在static的方法中使用~
只要明白static裡不能用this
Super和this
this 和 super 必須寫在第一行,兩者不能同時出現!
物件導向的五大基本原則
單一職責原則(SRP)
開放封閉原則(OCP)
里氏替換原則(LSP)
依賴倒置原則(DIP)
介面隔離原則(ISP)
try-catch-finally
如果try語句裡有return,那麼程式碼的行為如下:
1.如果有返回值,就把返回值儲存到區域性變數中
2.執行jsr指令跳到finally語句裡執行
3.執行完finally語句後,返回之前儲存在區域性變數表裡的值
如果try,finally語句裡均有return,忽略try的return,而使用finally的return.
public Method[] getDeclaredMethods()返回類或介面宣告的所有方法,包括public, protected, default (package) 訪問和private方法的Method物件,但不包括繼承的方法。當然也包括它所實現介面的方法。
public Method[] getMethods()返回類的所有public方法,包括其繼承類的公用方法,當然也包括它所實現介面的方法。
super和this
super()和this()均需放在構造方法內第一行。
this和super不能同時出現在一個建構函式裡面,因為this必然會呼叫其它的建構函式,其它的建構函式必然也會有super語句的存在,所以在同一個建構函式裡面有相同的語句,就失去了語句的意義,編譯器也不會通過。
this()和super()都指的是物件,所以,均不可以在static環境中使用。包括:static變數,static方法,static語句塊
過載和重寫
引數不同
方法過載的返回值的型別可以不同,因為判斷方法過載的方法主要是根據方法的引數不同來判定;
繼承下來的
方法重寫的返回值型別需要相同,重寫就是子類繼承了父類的方法,並在此方法上重寫屬於自己的特徵,既然是繼承過來的,那麼它的返回值型別就必須要相同
宣告
`
default String s
public final static native int w( )
abstract double d
abstract final double hyperbolicCosine( )
A:java的訪問許可權有public、protected、private和default的,default不能修飾變數
C:普通變數不能用abstract修飾,abstract一般修飾方法和類
D:被定義為abstract的類需要被子類繼承,但是被修飾為final的類是不能被繼承和改寫的`
路徑是c:\my\1.txt,但是’\’需要轉意,故前面加\,故最終是”c:\my\1.txt”
中介軟體是一種獨立的系統軟體或服務程式,分散式應用軟體藉助這種軟體在不同的技術之間共享資源。中介軟體位於客戶機/ 伺服器的作業系統之上,管理計算機資源和網路通訊。是連線兩個獨立應用程式或獨立系統的軟體。相連線的系統,即使它們具有不同的介面,但通過中介軟體相互之間仍能交換資訊。執行中介軟體的一個關鍵途徑是資訊傳遞。通過中介軟體,應用程式可以工作於多平臺或OS環境。
(簡單來說,中介軟體並不能提高核心的效率,一般只是負責網路資訊的分發處理)
封裝:
封裝就是將屬性私有化,提供公有的方法訪問私有屬性。
為什麼需要封裝?
通過封裝,可以實現對屬性的資料訪問限制,同時增加了程式的可維護性。
由於取值方法和賦值方法隱藏了實現的變更,因此並不會影響讀取或修改該屬性的類,避免了大規模的修改,程式的可維護性增強
Socket
客戶端通過new Socket()方法建立通訊的Socket物件
伺服器端通過new ServerSocket()建立TCP連線物件 accept接納客戶端請求
由Socket s=ss.accept();伺服器端通過TCP連線物件呼叫accept()方法建立通訊的Socket物件
基本資料型別和引用資料型別:
基本型別只能儲存一些常量資料,引用型別除了可以儲存資料,還能提供操作這些資料的功能;
為了操作基本型別的資料,java也對它們進行了封裝, 得到八個類,就是java中的基本型別的封裝類;他們分別是:
八種基本型別: byte short int long float double char boolean
對應的包裝類 : Byte Short Integer Long Float Double Character Boolean
識別符號:
識別符號是以字母開頭的字母數字序列,不能以數字開頭。
數字是指0~9,字母指大小寫英文字母、下劃線(_)和美元符號($),也可以是Unicode字符集中的字元,如漢字;
字母、數字等字元的任意組合,不能包含+、- *等字元;
不能使用關鍵字;
大小寫敏感
Servlet
基本功能:service方法是在servlet生命週期中的服務期,根據HTTP請求方法(GET、POST等),將請求分發到doGet、doPost等方法
實現:預設在HttpServlet類中實現。
servlet在多執行緒下其本身並不是執行緒安全的。
如果在類中定義成員變數,而在service中根據不同的執行緒對該成員變數進行更改,那麼在併發的時候就會引起錯誤。最好是在方法中,定義區域性變數,而不是類變數或者物件的成員變數。由於方法中的區域性變數是在棧中,彼此各自都擁有獨立的執行空間而不會互相干擾,因此才做到執行緒安全。
Math.cos為計算弧度的餘弦值,Math.toRadians函式講角度轉換為弧度
異常:
異常分為執行時異常,非執行時異常和error,其中error是系統異常,只能重啟系統解決。非執行時異常需要我們自己補獲,而執行異常是程式執行時由虛擬機器幫助我們補獲,執行時異常包括陣列的溢位,記憶體的溢位空指標,分母為0等!
JSP中include指令和include動作
include指令<%@ include file=”test.jsp”%>
include動作
include指令與include動作之間的根本性差異在於二者被呼叫的時間。include指令是在編譯階段的指令,即在編譯時,編譯器會把指令所指向目標檔案的內容複製到指令所在的位置。適合於靜態頁面
include動作是執行時的語法,在主介面被請求時,才將用到的頁面包含進來,更適合用於包含動態頁面的情況。
靜態include的結果是把其他jsp引入當前jsp,兩者合為一體;動態include的結構是兩者獨立,直到輸出時才合併
forward和redirect
forward是伺服器內部的重定向,伺服器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而客戶端並不知道,因此在客戶端瀏覽器的位址列中不會顯示轉向後的地址,還是原來的地址。
redirect是客戶端的重定向,是完全的跳轉,即客戶端瀏覽器會獲取到跳轉後的地址,然後重新傳送請求,因此瀏覽器中會顯示跳轉後的地址。由於這種這種方式比forward方式多了一次網路請求,因此其效率要低於forward方式。 客戶端的重定向可以通過設定特定的http頭或寫javascript指令碼實現。
volatile
所謂 volatile的措施,就是
1. 每次從記憶體中取值,不從快取中什麼的拿值。這就保證了用 volatile修飾的共享變數,每次的更新對於其他執行緒都是可見的。可以理解成:對volatile變數所有的寫操作都能立刻被其他執行緒得知。
2. volatile保證了其他執行緒的立即可見性,就沒有保證原子性。
3.由於有些時候對 volatile的操作,不會被儲存,說明不會造成阻塞。不可用與多執行緒環境下的計數器。
由於及時更新,很可能導致另一執行緒訪問最新變數值,無法跳出迴圈的情況
多執行緒下計數器必須使用鎖保護。
相關文章
- Java基礎總結Java
- 【Java基礎】--J2SE深度總結Java
- JavaScript學習總結(一)基礎部分JavaScript
- [Java基礎]Java總結篇Java
- java基礎總結一Java
- java基礎部分Java
- 編輯器之神VIM 總結 基礎部分
- NODE基礎總結(2) —— Module
- 9Java基礎總結Java
- Java基礎知識總結Java
- java集合框架基礎總結Java框架
- java基礎註釋總結Java
- java基礎題目總結Java
- java基礎題(部分)Java
- Java基礎部分6Java
- JS基礎知識總結(2)JS
- Java 常用類總結(SE基礎)Java
- Java基礎知識點總結Java
- Java基礎知識總結-1Java
- Java基礎集合簡單總結Java
- 第三週:java物件導向部分總結(2)Java物件
- Oracle學習總結--基礎部分(儲存與索引)Oracle索引
- Java面試題總結之Java基礎(三)Java面試題
- 面試題總結-Java部分面試題Java
- yii2 基礎知識總結
- Java基礎面試知識點總結Java面試
- Java基礎之常見API總結JavaAPI
- Java基礎對反射知識總結Java反射
- java基礎使用的集合大總結Java
- JAVA基礎知識精華總結(一)Java
- JAVA基礎知識精華總結(二)Java
- JS基礎總結(2)——原型與原型鏈JS原型
- Java程式設計基礎29——JavaSE總結Java程式設計
- Java個人知識點總結(基礎篇)Java
- Java基礎 | Stream流原理與用法總結Java
- 基礎篇:java GC 總結,建議收藏JavaGC
- 面試題收集——Java基礎部分(一)面試題Java
- JavaScript基礎總結JavaScript