JAVA基礎總結

2021-08-16 11:04:15 字數 3944 閱讀 8691

同乙個包中的其他類

不同包中的其他類

子類自身

private

nono

noyes

protected

yesno

yesyes

public

yesyes

yesyes

無修飾(default)

yesno

noyes

static方法中不能使用this,super這樣的關鍵字,因為static優先於物件被載入到記憶體之中,static執行時物件可能還未被例項化。

內部類包含static修飾的屬性或方法時,內部類必須也被static修飾,其實理解起來也很簡答,應為static會優先被載入,如果內部類不被static修飾,那麼內部變數是不會被提前載入的,這時static關鍵字修飾就不起作用了。

final修飾的類不可被繼承

final修飾的函式無法被複寫

final修飾的變數只能賦值一次

abstract修飾的類無法被例項化,只能夠通過子類的繼承並實現內部所有的抽象函式才能被例項化。

abstract修飾的函式只需要申明方法名,引數,不需要寫函式體。

抽象類中同樣可以定義非抽象的方法,同時抽象類也有建構函式,這個建構函式提供給子類例項化時使用。

抽象類中也可以沒有抽象的方法。

abstract不可以和static,private,final公用,簡單理解一下,static修飾說明優先載入,而abstract未被實現,所以無法被優先載入。final修飾表名為最終狀態無法修改,而abstract修飾的需要子類去實現,必須可以修改。private表示私有化,自由自身能夠訪問到,而abstract需要子類訪問並實現函式體。

public

class test

}

物件,則是對一些函式和屬性進行了封裝

乙個類在實現了介面中所有的方法時才能被例項化,否則這個類還是乙個抽象類,無法被例項化,實現某個介面使用關鍵字implements

乙個類可以實現多個介面,而且介面之間也可以相互繼承,並且介面可以多繼承,乙個簡單的例子:

public

class

test

inte***ce

inte***ce2

inte***ce

inte***ce3

extends

inte***ce1, inte***ce2

class

myclass

implements

inte***ce3

@override

public

void function2()

}}

成員函式:當子類中出現與父類之中相同的方法時,子類的方法會將父類中的方法覆蓋。在外部呼叫時,會呼叫子類的方法。

建構函式:子類的建構函式中會預設呼叫super()意味著在構造子類之前需要先對其父類進行構造。

class

father

}

class

sonextends

father

}

public

static

void

main(string args)

private

void main() catch (ioexception e)

}private

void

function

()throws

ioexception

public

static

void

main(string args)

} catch (ioexception e)

}

public

static

void

main(string args)

}) ;

}.start();

}

public

class

test

}class

example catch (interruptedexception e)

system.out.println("hello: " + i);}}

}class

thread1

extends

thread

@override

public

void run()

}

public

class test

public

static test getinstance() }}

return instance;

}}

作用

charat

獲取指定位置的字元

indexof

順序獲取字元或字串的位置,沒有返回-1

lastindexof

倒序獲取字元或字串的位置,沒有返回-1

substring

獲取指定位置的子串

contain

判斷字串是否包含指定字串

startwith

判斷字串是否以指定字串開頭

endwith

判斷字串是否以指定字串結尾

equalsignorecase

判斷字串是否相等,忽略大小寫

tolowercase

所有字母轉換為小寫

touppercase

所有字母轉換為大寫

replace

替換trim

去除字串首位空格

collection(單列) 

map(雙列) 

linkedlist:底層鍊錶實現,增刪熟讀很快,執行緒不同步

vector:底層陣列實現,查詢增刪速度都很慢,執行緒同步

由於在list集合中,判斷元素是否存在或是刪除元素都是通過元素的equals方法,所以在日常的開發過程中,通常需要自己重寫集合元素物件的equals方法,這樣能夠提高list集合的操作效率。

map介面與collection有很大的區別,map一次儲存乙個鍵值對,並且需要保證map中所有的健是唯一的。 

迭代map的方法:

通過map.entryset()方法獲取到鍵值對set,直接遍歷。

看到array說明底層資料結構是陣列,證明查詢速度快

看到linked說明底層資料結構是鍊錶,增加刪除的速度開

看到hash說明底層資料結構是hash表,需要盡量保證內部元素的hash值唯一,並且需要複寫元素的hascode方法和equals方法。

看到tree就說明底層的資料結構是二叉樹,需要相當排序,內部元素需要comparable

泛型只是針對編譯時期,在執行時期並不存在泛型的概念,泛型只是為了將一些型別強制轉換的異常轉化為編譯錯誤。使用泛型時必須保證等式兩邊宣告的泛型是一樣的。 

泛型的上限與下限:

? super e 泛型指接受e和e的所有父類

位元組流:位元組流可以處理幾乎計算機當中的所有資料(凡是以inputstream和outputstream結尾的都為位元組流)

字元流:字元流的出現是應為,各個國家的語言不通,字元也不通,所以當將各總編碼表和流封裝在一起,為了方便字元的操作,所以設計到字元操作的時候優先考慮字元流(凡是以reader和writer結尾的都是字元流)

如果需要處理純文字物件 使用reader和writer,否者使用inputstream和outputstream

明確使用那個具體的流,通過明確具體操作的資料裝置:(磁碟)file,(記憶體)chararray。。。

是否需要利用快取提高效率,如果需要可以使用buffer對流進再一次的封裝。

java基礎總結

float 賦值時後邊加f 如 float ff 1.2f 靜態變數 宣告時前邊 static 如static int x 0 資料型別轉換 低精度可以直接轉換成高精度,高精度轉換成低精度 需要顯示型別轉換 int x 50 float y x 顯示轉換 int a int 45.23 foreac...

Java基礎總結

1.string的理解 string s hello world 宣告的內容 乙個指向物件的引用,名為 s 可以指向型別為string的任何物件,目前指向 hello world 這個string型別的物件 string string s 明了另外乙個只能指向string物件的引用,名為string...

Java基礎總結

jdk 1.8 1.hashtable hashtable hash new hashtable 1.key value均不能為空,否則nullpointerexception。2.put相同的key,value值替換,返回原value。3.方法被synchronized修飾,保證執行緒安全,影響效...