常用集合、數據接口:set list hash

 

java基礎

  1. 數據類型:8種基本的數據類型,所佔的字節數以及長度,對應的封裝類型。
  2. collection:3種接口以及實現類(list、map、set)
  3. 面向對象的三大特徵:
  4. 重寫和重載的區別:
  5. String、StringBuilder、StringBuffer的區別
  6. 單例模式:
  7. JDK、JRE、JVM三者的區別和聯繫:
  8. JVM:工作原理、引用類型、類加載、回收機制
  9. 接口和抽象類的區別、用法
  10. Throw throws的區別:
  11. 線程相關

 

二、java web開發框架

 

  1. SSH
  2. Jfinal

 

三、mysql數據庫操作

 

 

四、計算機網絡:

  1. 基礎的名詞、域名、IP:
  2. HTTP、TCP
  3. Get、Post的區別

 

 

五:算法:

  1. 排序算法;插入排序、選擇排序、冒泡排序 o(N2)
  2. 堆排序:

數據結構全書瀏覽。

https://blog.csdn.net/qq_41523096/article/details/86560570?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

 

 

 

 

 

8種基本的數據類型https://www.runoob.com/java/java-basic-datatypes.html

1字節=8位=1byte  位:2進制中的一個位置

4個整型、2個浮點、一個布爾、一個字符型

 

Object類

 

Number類

Object類

 

byte

short

int

long

Float

double

boolean

char

位數

8

16

32

64

32

64

1

16

符號位

1

1

1

1

1

1

 

 

範圍

2^7

2^15

2^31

2^63

7

15

 

+2^15

正比負少1,0

-128 +127

-32768

32767

 

 

整24

浮7

整48

浮15

True 1 false 0

0-65,535

沒有負

java.lang

Byte

Short

Integer

Long

Float

Double

 

Character

 

包裝類: https://www.runoob.com/java/java-number.html

封裝基本類型位對象,提供多種方法調用。

裝箱:基本數據類型轉對象

拆箱:對象轉基本數據類型

這種由編譯器特別支持的包裝稱爲裝箱,所以當內置數據類型被當作對象使用的時候,編譯器會把內置類型裝箱爲包裝類。相似的,編譯器也可以把一個對象拆箱爲內置類型。Number 類屬於 java.lang 包。(.valueOf()返回內置數據類型, toString())以字符串形式返回值

補充:

首先,我們看一下雙等號“ == ”和equals()方法的不同之處。

雙等號“ == ”,對於基本數據類型,比較的是它們的值。

對於非基本類型,比較的是它們在內存中的存放地址,或者說是比較兩個引用是否引用內存中的同一個對象。

equals()是在Object基類中定義的方法。

這個方法的初始行爲是比較對象的內存地址,但在一些類庫中,這個方法被覆蓋掉了,如String,Integer,Date等。在這些類當中equals有其自身的實現(一般是比較值),而不再是比較類在堆內存中的存放地址了。

對於複合數據類型之間進行equals比較,在沒有覆寫equals方法的情況下,它們之間的比較還是基於他們在內存中的存放位置的地址值的,因爲Object的equals方法也是用雙等號“ == ”進行比較的,所以比較後的結果跟雙等號“ == ”的結果相同。

 

Collection 接口:都在java.util 包中,屬於JDK。

包含集合框架、遺留的 collection 類、事件模型、日期和時間設施、國際化和各種實用工具類(字符串標記生成器、隨機數生成器和位數組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時間處理模式、日期時間工具等各類常用工具包。

複雜(全):

https://blog.csdn.net/u010775025/article/details/79315361?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

簡單(簡潔):

https://blog.csdn.net/Dreamhai/article/details/80570544

 

下面都有三種接口,List、set接口繼承Collection接口。Map是util下一個獨立的接口

儘管Map接口和它的實現也是集合框架的一部分,但Map不是集合,集合也不是Map。因此,Map繼承Collection毫無意義,反之亦然。

Collection接口是集合類的根接口,Java中沒有提供這個接口的直接的實現類。但是卻讓其被繼承產生了兩個接口,就是Set和List。Set中不能包含重複的元素。List是一個有序的集合,可以包含重複的元素,提供了按索引訪問的方式。

Map是Java.util包中的另一個接口,它和Collection接口沒有關係,是相互獨立的,但是都屬於集合類的一部分。Map包含了key-value對。Map不能包含重複的key,但是可以包含相同的value。

Iterator,所有的集合類,都實現了Iterator接口,這是一個用於遍歷集合中元素的接口,主要包含以下三種方法:

1.hasNext()是否還有下一個元素。

2.next()返 回下一個元素。

3.remove()刪除當前元素。

 

 

實現collection的接口的兩個子接口:List Set

 

List: 是一個有序的集合,提供下標、索引使用戶可以操作集合內部元素(類似於數組,只不過存放的是對象),與Set不同,它允許元素重複。實現List接口的類有LinkedListArrayListVectorStack

Set是一種不包含重複元素的集合。通過LinkedHashSet(有序)通過鏈表的形式保證有序。

 

Map(鍵值對:key-value)請注意,Map沒有繼承Collection接口,Map提供keyvalue的映射。一個Map中不能包含相同的key,每個key只能映射一個valueMap接口提供3種集合的視圖,Map的內容可以被當作一組key集合,一組value集合,或者一組key-value映射。

 

ArrayList內部是由數組是實現的,而LinkList內部是由循環雙向鏈表實現的。兩個都繼承了AbstractListAbstractList 是一個抽象類,實現了List 接口。兩者都是線程不安全的,想要實現線程安全,則需要加上

 

Hash 尋址衝突的解決辦法; https://www.cnblogs.com/gongcheng-/p/10894205.html

 

Hashmap的實現:https://blog.csdn.net/Jae_Peng/article/details/79562432

HashMapMap.Entry靜態內部類實現中存儲key-value對。HashMap使用哈希算法,在putget方法中,它使用hashCode()equals()方法,對象的hashCodeequals()方法。當我們通過傳遞key-value對調用put方法的時候,HashMap使用Key hashCode()和哈希算法來找出存儲key-value對的索引。Entry存儲在LinkedList中,所以如果存在entry,它使用equals()方法來檢查傳遞的key是否已經存在,如果存在,它會覆蓋value,如果不存在,它會創建一個新的entry然後保存。當我們通過傳遞key調用get方法時,它再次使用hashCode()來找到數組中的索引,然後使用equals()方法找出正確的Entry,然後返回它的值。屬於解決hash衝突中的鏈地址法。

 

HashCode equils: https://www.cnblogs.com/zcjyzh/p/9329346.html

要求:1. equils值相等的兩個對象,hashcode值也相等

2. hashcode值相等的兩個對象,equils值不要求相等

如果重寫了equils,不重寫hashcode會違反第一條規定。

即重寫了鍵對象的equils,如果不重寫HashCODE,會導致自定義的相等對象滅有相同的hachcod映射值,

 

線程安全的是指加上了同步(操作的時候上了鎖synchronize,讀音:心兒闊奈子)

總結;

如果涉及到堆棧,隊列等操作,應該考慮用List,對於需要快速插入,刪除元素,應該使用LinkedList,如果需要快速隨機訪問元素,應該使用ArrayList

如果程序在單線程環境中,或者訪問僅僅在一個線程中進行,考慮非同步的類,其效率較高,如果多個線程可能同時操作一個類,應該使用同步的類。

要特別注意對哈希表的操作,作爲key的對象要正確複寫equalshashCode方法。

儘量返回接口而非實際的類型,如返回List而非ArrayList,這樣如果以後需要將ArrayList換成LinkedList時,客戶端代碼不用改變。這就是針對抽象編程。

 

 

當對字符串進行修改的時候,需要使用 StringBuffer StringBuilder 類。

 

String 類不同的是,StringBuffer StringBuilder 類的對象能夠被多次的修改,並且不產生新的未使用對象。

 

StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在於 StringBuilder 的方法不是線程安全的(不能同步訪問)。

 

由於 StringBuilder 相較於 StringBuffer 有速度優勢,所以多數情況下建議使用 StringBuilder 類。然而在應用程序要求線程安全的情況下,則必須使用 StringBuffer 類。

 

 

重寫和重載:Java 重寫(Override)與重載(Overload) https://www.runoob.com/java/java-override-overload.html

重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫 (子類繼承父類)

重載(overloading) 是在一個類裏面方法名字相同,而參數不同。返回類型可以相同也可以不同。(常用的是構造函數)

 

面向對象的三大特徵:抽象、繼承、多態

繼承java面向對象編程技術的一塊基石,因爲它允許創建分等級層次的類。

https://www.runoob.com/java/java-inheritance.html

繼承就是子類繼承父類的特徵和行爲,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行爲。

支持多次繼承,不支持多繼承。

 

多態; 繼承-重寫-父類引用指向子類對象 https://www.runoob.com/java/java-polymorphism.html

 

抽象https://www.runoob.com/java/java-abstraction.html

 

接口和抽象類的區別:

1:類描述對象的屬性和方法。接口則包含類要實現的方法

1. 抽象類中的方法可以有方法體,就是能實現方法的具體功能,但是接口中的方法不行。

2. 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是 public static final 類型的。

3. 接口中不能含有靜態代碼塊以及靜態方法( static 修飾的方法),而抽象類是可以有靜態代碼塊和靜態方法。

4. 一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。

JDK 1.8 以後,接口裏可以有靜態方法和方法體了。

接口:https://www.runoob.com/java/java-interfaces.html

關鍵字爲 interface

實現接口用implemts

public interface Hockey extends Sports, Event 多繼承

 

; 爲了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。把功能相似或相關的類或接口組織在同一個包中,方便類的查找和使用。

 

Java 8新特性; https://www.runoob.com/java/java8-new-features.html

JDKJREJVM三者間的聯繫與區別

 

https://www.cnblogs.com/bingyimeiling/p/10266949.html

  1. JDK 用於開發,JRE 用於運行java程序 ;如果只是運行Java程序,可以只安裝JRE,無序安裝JDK
  2. JDk包含JREJDK JRE 中都包含 JVM
  3. JVM java 編程語言的核心並且具有平臺獨立性

開發過程;

使用JDK(調用Java API)編寫Java源代碼,存儲於.java文件中。

JDK中的編譯器javac.exeJava源代碼編譯成爲字節碼,存儲在.class文件中。

JRE加載、驗證、執行Java字節碼。

JVM字節碼解釋爲機器碼並映射到CPU指令集或OS(操作系統)的系統調用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章