Java基礎知識回顧 6

2021-09-22 02:58:13 字數 3182 閱讀 1815

1、遍歷

jar/zip

檔案中的資源

file jar = 

newfile(

"myfile.jar"

); zipinputstream zis = new

zipinputstream(

newfileinputstream(jar)); 

try 

} finally

2、遍歷web應用中的資源。

setsubresources = servletcontext.getresourcepaths("/web-inf/");

3、自定義屬性編輯器,date的格式化中常用

public

class

mypropertyeditor 

extends

propertyeditorsupport  

@override

public

void

setastext(string text) 

throws

illegalargumentexception  catch

(parseexception e)  

} } 

4、this關鍵字總結

呼叫建構函式,且必須放在建構函式的第一行,且不能產生迴圈構造函式呼叫。

class

person  

public

person(string username)  

public

person(string username, string password)  

} this物件

public

void

print() 

person person = 

newperson(

"zhangsan"

,"hello"

); person.print(); 

system.out.println(person);

測試結果:屬性的內容完全一致,具體如下。說明this代表的就是當前new出來的物件。new出來的是哪個物件this就代表這個物件。

com.alibaba.hummock.designpattern.composite2.person@1fb8ee3 

com.alibaba.hummock.designpattern.composite2.person@1fb8ee3 

5、輸出系統屬性到螢幕,不用再乙個個的for迴圈輸出

system.getproperties().list(system.out);

6、thread的join方法

join()將多執行緒交替執行的方式轉換成了順序執行,也就是

等join的執行緒執行完成返回之後再往下推進主流程。

class

mythread 

implements

runnable  

public

void

run()  catch

(interruptedexception e)  

} } 

}

public

class

junit  

} } 

結果: 不再是main和

mt1 

mt1 

mt1 

mt1 

mt1 

main 

main 

main 

main 

main 

7、售票系統模擬 

public class junit  

} class mythread extends thread  catch (interruptedexception e)  

} } 

} 或者:

public class junit  

} class mythread implements runnable  catch (interruptedexception e)  

} } 

} 測試結果:

thread-0: 10 

thread-1: 9 

thread-1: 8 

thread-0: 7 

thread-0: 6 

thread-1: 5 

thread-0: 4 

thread-1: 3 

thread-1: 2 

thread-0: 1 

【注意】

第一:執行緒之間共享的變數必須是成員變數,而不是方法中的變數,且必須屬於執行緒的,即必須為static變數

第二:執行緒之間必須同步,即synchronized

18、多執行緒中線程安全問題

在程式中,成員變數是可以被多個成員方法操作(讀或寫),即便該變數存在加鎖(synchronized)的方法中在多執行緒的情況下也可以被其他執行緒呼叫其他方法修改,這也就是成員變數不是執行緒安全的根本原因。servlet為執行緒不安全性即為最好例子。如果要使用成員變數,又要保證執行緒安全性,那該成員變數在其他方法中必須為唯讀,不能修改該變數。

public

class

junit  

} class

ticket 

implements

runnable  catch

(interruptedexception e)  

system.out.println("ticket: "

+ ticket); 

} public

void

update()  

} 測試結果:

999 

ticket: 999 

【注意】如果同乙個類中有多個方法都使用了synchronized關鍵字,就要分析他們獲取的是哪個物件的鎖。如果是同一把鎖,則只能被乙個執行緒獲取;否則可並行執行。

java基礎知識回顧(2)

一 switch後的小括號裡只能使用6種資料型別 byte short int char 列舉 字串。二 基本型別的值直接存在棧記憶體中,而陣列等引用型別的值存在堆記憶體中,棧記憶體只放陣列的位址。三 方法過載必須滿足三種情況 1 方法的名稱必須相同。2 方法的引數必須不同,這裡的不同分三種情況 a...

java基礎知識回顧(4)

一 基本資料型別 包裝類與string類之間的轉換 1 基本資料型別 包裝類 string類 呼叫string類的過載的valueof x 方法 int i1 10 integer i2 i1 轉為包裝類 stirng str1 string.valueof i1 轉為字串 2 string類 基本...

java的基礎知識回顧 2

運算子 運算子的優先順序 括號優先順序最大 與 1 1 1 2 3 010 011 010 2 或 0 0 0 ture true true true true 表示短路與 當第乙個條件為false的時候,第二個條件就不用判斷 表示與位運算 表示短路或 當第乙個條件為true時候,第二個條件就不用判...