課程:《程序設計與數據結構》
班級: 1723
姓名: 李馨雨
學號:20172328
實驗教師:王志強
實驗日期:2018年4月17~30日
必修/選修: 必修java
1.實驗內容程序員
初步掌握單元測試和TDD編程
理解並掌握面向對象三要素:封裝、繼承、多態設計模式
初步掌握UML建模安全
熟悉S.O.L.I.D原則數據結構
瞭解設計模式多線程
完成藍墨雲上 (1)-(5)實驗。函數
2.實驗過程及結果
碼雲連接工具
3.實驗過程當中遇到的問題和解決過程單元測試
問題1:StringBuilder、StringBuffer、String類之間的關係
問題1解決方案:
String的值是不可變的,這就致使每次對String的操做都會生成新的String對象,不只效率低下,並且大量浪費有限的內存空間,StringBuffer是可變類,和線程安全的字符串操做類,任何對它指向的字符串的操做都不會產生新的對象,StringBuffer和StringBuilder類功能基本類似。
String 類
String的值是不可變的,這就致使每次對String的操做都會生成新的String對象,不只效率低下,並且大量浪費有限的內存空間。 String a = "a"; //假設a指向地址0x0001
a = "b";//從新賦值後a指向地址0x0002,但0x0001地址中保存的"a"依舊存在,但已經再也不是a所指向的,a 已經指向了其它地址。
所以String的操做都是改變賦值地址而不是改變值操做。
StringBuffer是可變類,和線程安全的字符串操做類,任何對它指向的字符串的操做都不會產生新的對象。 每一個StringBuffer對象都有必定的緩衝區容量,當字符串大小沒有超過容量時,不會分配新的容量,當字符串大小超過容量時,會自動增長容量。
StringBuffer buf=new StringBuffer(16); //分配長16字節的字符緩衝區
StringBuffer buf=new StringBuffer(512); //分配長512字節的字符緩衝區
StringBuffer buf=new StringBuffer("this is a test")//在緩衝區中存放了字符串,並在後面預留了16字節的空緩衝區。
3.StringBuffer
StringBuffer和StringBuilder類功能基本類似,主要區別在於StringBuffer類的方法是多線程、安全的,而StringBuilder不是線程安全的,相比而言,StringBuilder類會略微快一點。對於常常要改變值的字符串應該使用StringBuffer和StringBuilder類。
問題2:多線程和單線程的概念
問題2解決方案:
問題3解決方案:這個問題一直不知道是本身哪裏錯誤。後來經同窗幫助,是前面Complex類中編寫錯誤,形式參數中變量a的實部和虛部不能直接調用,應該用我以前寫在前面的get方法去調用具體值。(很差意思,忘記截圖)
問題4:在作第三個提交點問題時,有一個小錯誤。一直紅線提示。
問題4解決方案:後來發現是浮點數程序系統默認double,因此float型在後面初始化時應該用數值f
。
個人實驗二中的幾個實驗作的有點吃力,可是仍是收穫了不少。尤爲是測試驅動開發(TDD),直接提供了一種很好用的方法去測試編寫的程序是否有些紕漏,以前用命令行的時候老是找編譯類錯誤和語法錯誤,如今能夠具體系統的去找編程中的邏輯錯誤,因此junit是一種對程序員很實用的工具。
參考資料
1.全面解釋java中StringBuilder、StringBuffer、String類之間的關係
2.《Java程序設計與數據結構教程(第二版)》學習指導