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