java知识点_java知识点
hashtable和hashmap:hashtable的key和value不允許為null,hashmap的key和value可以為null
hashtable的方法是Synchronized,hashmap沒有,是非線程安全的,線程不安全的hashmap采用的是快速失敗機(jī)制(線程不安全的集合對象在迭代過程中有其他線程修改了集合對象結(jié)構(gòu)或者元素數(shù)量,有可能會拋出異常:ConcurrentModificationException)
運算符優(yōu)先級:(從大到小)
java的jvm:
內(nèi)存分為三個區(qū):堆(heap),方法區(qū)(method),棧(stack)
堆區(qū)被所有的線程共享,只存放對象的實例和數(shù)組
方法區(qū)杯所有線程共享,用于存儲已經(jīng)被虛擬機(jī)加載的類信息、常量、靜態(tài)變量
棧區(qū),每一個線程都有一個棧區(qū),棧區(qū)中保存方法的基礎(chǔ)數(shù)據(jù)類型和對象的引用
異常捕捉:try catch finnally
執(zhí)行try如果有錯則執(zhí)行catch,然后執(zhí)行finnally(finnalyy語句一定會執(zhí)行)
finally語句一定會在return之前執(zhí)行,finally的return或者throw語句會覆蓋try-catch語句中的return
靜態(tài)方法:用static修飾,使用公共的內(nèi)存空間,所以的對象可以直接引用,可以通過類型或者對象名.方法名調(diào)用
在實例化類的時候,靜態(tài)會被優(yōu)先加載,且只加載一次,不受實例化的影響就可以使用
垃圾回收還是會造成內(nèi)存泄漏問題,內(nèi)存泄漏:一個不被使用的對象或者變量還在內(nèi)存中占用存儲空間,在c中由程序員來釋放內(nèi)存
在java中引入了垃圾回收機(jī)制來釋放內(nèi)存,但是還是會存在內(nèi)存泄漏,
內(nèi)存泄漏的兩種情況:①堆中申請的內(nèi)存沒有釋放②對象已不被使用(如連接沒有關(guān)閉),GC機(jī)制只能解決①情況
造成內(nèi)存泄漏的原因:1.靜態(tài)集合類,生命周期同程序一樣,對象在程序結(jié)束之前將不能釋放,造成浪費
2.各種連接:數(shù)據(jù)庫連接,網(wǎng)絡(luò)連接,IO連接,不使用時不關(guān)閉
3.釋放對象時沒有刪除相應(yīng)的監(jiān)聽器
內(nèi)存溢出:申請的內(nèi)存不足夠使用,內(nèi)存泄漏會導(dǎo)致內(nèi)存溢出
sleep()和wait():sleep是thread類中的,wait是object中的,sleep不釋放鎖,wait釋放鎖,wait、notify必須在Synchronized中使用
類加載的過程:
字符串:
indexof(str):從左至右返回指定字符串的下標(biāo)
lastindexof(str):從右至左返回指定字符串的下標(biāo)
(下標(biāo)都從左往右由0開始)
substring(begin,end):返回由begin到end-1的字符內(nèi)容
String、Stringbuffer、Stringbuilder
String是不可變字符,每次修改是是生成新的string對象,傳值和傳地址沒有什么區(qū)別
Stingbuilder:可變長字符,效率高,線程不安全
Stringbuffer:可變長字符,效率低,線程安全
總結(jié)
以上是生活随笔為你收集整理的java知识点_java知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在非洲,他开了一家游戏包机房
- 下一篇: Intel超频一定要选i9-13900K