




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、奧氏體不銹鋼TIG焊的焊接工藝評定設(shè)計摘要 焊接過程是特殊過程。焊接結(jié)果不容易經(jīng)濟地通過檢驗和試驗完全驗證,有些問題在設(shè)備使用后才曝露出來造成不應有的損失。在產(chǎn)品施焊前就需要確認焊接工藝能否保證焊接接頭的使用性能。焊接工藝評定又是制造安裝單位的技術(shù)資源和技術(shù)儲備,是焊接技術(shù)和焊接質(zhì)量控制水平和能力的標志,也是獲得優(yōu)良焊接質(zhì)量的保證。通過焊接工藝評定的研究能更好的了解焊接技術(shù)和焊接工藝的特性,掌握焊接工程的內(nèi)在規(guī)律。關(guān)鍵詞 焊接工藝評定 一般過程 指導書 評定報告 檢測 焊縫引 言在現(xiàn)代生產(chǎn)中,隨著社會的進步、生產(chǎn)力的發(fā)展對焊接產(chǎn)品的要求越來越高,不銹鋼以其耐腐蝕,耐酸等良好的性能得到廣泛應用奧
2、氏體不銹鋼是應用最廣泛的不銹鋼,以Gr-Ni型不銹鋼最為普遍。目前奧氏體不銹鋼大致分為Gr18-Ni8型、Gr25-Ni20型、Gr25-Ni35型。還有廣泛開發(fā)應用的超級奧氏體不銹鋼。本文以1Gr18Ni9Ti鋼為例做焊接工藝評定。第一章 焊接工藝評定基本原理1.1 焊接工藝評定的目的焊接工藝評定的目的是驗證施焊單位擬定的焊接工藝的正確性,并評定施焊單位能力。1.2焊接工藝評定的一般程序焊接工藝評定的一般過程是:在產(chǎn)品施焊之前,根據(jù)材料的焊接性能,結(jié)合產(chǎn)品的制造工藝擬定焊接工藝指導書,遵照焊接工藝評定標準施焊試件、制取式樣,檢查試件和式樣,測定焊接接頭是否具有所要求的使用性能,提出焊接工藝評
3、定報告,對擬定的焊接工藝指導書進行評定作出結(jié)論。根據(jù)評定合格的焊接工藝指導書,可以編制出在它覆蓋范圍內(nèi)若干焊接工藝規(guī)程,規(guī)范生產(chǎn)單位的制造安裝焊接工作。若評定不合格,則應分析不合格原因,修訂焊接工藝指導書,重新評定。1.3 焊接性能是焊接工藝評定基礎(chǔ)第2章 奧氏體不銹鋼TIG焊的焊接工藝評定理論基礎(chǔ)2.1對接焊縫、角焊縫的焊接工藝評定 評定對接焊縫工藝時,采用對接焊縫試件。對接焊縫試件評定合格的焊接工藝亦適用于角焊縫。試件形式示意圖1。. 圖1 焊接工藝評定試件形式 管與板角焊縫試件評定合格的焊接工藝適用于板材的角焊縫,反之亦可。板材對接焊縫試件評定合格的焊接工藝適用于管材的對接焊縫,反之亦可
4、。焊接工藝因素焊接工藝評定因素分為重要因素、補加因素和次要因素 重要因素是指影響焊接接頭力學性能(沖擊韌性除外)的焊接工藝因素。 補加因素是指影響焊接接頭沖擊韌性的焊接工藝因素。當規(guī)定進行沖擊試驗時,需增加補加因素。 次要因素是指對要求測定的力學性能無明顯影響的焊接工藝因素。 表1 奧氏體不銹鋼TIG焊的焊接工藝評定因素因素種類焊接工藝評定因素的主要內(nèi)容重要因素藥芯焊絲牌號(只考慮類別代號后頭兩位數(shù)字)、焊絲鋼號、增加或取消填充金屬、實心焊絲改為藥芯焊絲或相反、預熱溫度比已評定合格值低50以上、保護氣體種類、混合保護氣體配比、補加因素從已評定合格的焊接位置改變?yōu)橄蛏狭⒑?、電流種類和極性、增加線
5、能量次要因素坡口形式、在同組別號內(nèi)選擇不同鋼號做電板、坡口根部間隙、增加鋼墊板、填充金屬橫截面積、焊接位置、改變尾部保護氣體、保護氣體流量、電流種類和極性、電流值和電壓值、烏極的直徑和種類、不擺動或擺動焊、烏極間距、噴嘴尺寸. 評定規(guī)則.1 焊接方法 改變焊接方法,需要重新評定焊接工藝 。.2 各種焊接方法的焊接工藝評定重要因素、補加因素和次要因素 1)當變更任何一個重要因素時都需要重新評定焊接工藝。 2)當增加或變更任何一個補加因素時,則可按增加或變更的補加因素增焊沖擊韌性試件進行試驗。 3)當變更次要因素時不需要重新評定焊接工藝,但需要重新編制焊接工藝指導書。.3 當同一條焊縫使用兩種或兩
6、種以上焊接方法或重要因素、補加因素不同的焊接工藝時,可按每種焊接方法或焊接工藝分別進行評定;亦可使用兩種或兩種以上焊接方法、焊接工藝試件,進行組合評定。 組合評定合格后用于焊件時,可以采用其中一種或幾種焊接方法、焊接工藝,但應保證其重要因素、補加因素不變,按相關(guān)條款確定每種焊接方法或焊接工藝適用于焊件厚度的有效范圍。2.1.5熱處理改變焊后熱處理類別,需重新評定焊接工藝。除氣焊外,當規(guī)定進行沖擊試驗時,焊后熱處理的保溫溫度范圍或保溫時間范圍改變后要重新評定焊接工藝。試件的焊后熱處理應與焊件在制造過程中的焊后熱處理基本相同,低于下轉(zhuǎn)變溫度進行焊后熱處理時,試件保溫時間不得少于焊件在制造過程中累計
7、保溫時間的80%。 奧氏體鋼的使用溫度高于或等于196時,可免做沖擊試驗,一般不熱處理。2.1.6試件厚度和焊件厚度評定合格的對接焊縫試件的焊接工藝適用于焊件厚度的有效范圍:表2 試件焊縫金屬厚度與焊件焊縫金屬厚度規(guī)定 mm表3 試件厚度與焊件厚度規(guī)定 mm1) 對接焊縫試件評定合格的焊接工藝用于角焊縫焊件時,焊件厚度的有效范圍不限。2) 組合評定合格后,當作單一焊接方法(或焊接工藝)分別評定來確定適用于焊件母材的厚度有效范圍。3) 本次設(shè)計使用的奧氏體母材厚度為 1.5T10.試件制備母材、焊接材料、坡口和試件的焊接必須符合焊接工藝規(guī)程的要求。 試件的數(shù)量和尺寸應滿足制備試樣的要求,試樣也可
8、以直接在焊件上切取。 對接焊縫試件尺寸:試件厚度應充分考慮適用于焊件厚度的有效范圍。 角焊縫試件尺寸見表4和圖2、圖3。表4 板材角焊縫試件尺寸 mm圖2 板材角焊縫試件及試樣圖3 管材角焊縫試件 對接焊縫試件和試樣的檢驗.1 試件檢驗項目:外觀檢查、無損檢測、力學性能試驗。 外觀檢查和按 JB4730 進行無損檢測結(jié)果不得有裂紋。 .2 力學性能試驗項目包括拉伸試驗、夏比 V 型缺口沖擊試驗(當規(guī)定時)和彎曲試驗。 a) 力學性能試驗項目和取樣數(shù)量應符合表 5 的規(guī)定。 b) 當試件采用兩種或兩種以上焊接方法(或焊接工藝)時: 拉伸試樣和彎曲試樣的受拉面應包括每一種焊接方法(或焊接工藝)的焊
9、縫金屬和熱影響區(qū); 當規(guī)定做沖擊試驗時,對每一種焊接方法(或焊接工藝)的焊縫區(qū)和熱影響區(qū)都要做沖擊試驗。 表 5 力學性能和彎曲性能試驗項目和取樣數(shù)量 .3 力學性能試驗的取樣要求: a) 取樣時,一般采用冷加工方法,當采用熱加工方法取樣時,則應去除熱影響區(qū)。 b) 試件允許避開缺陷制取試樣,取樣位置按規(guī)定。 c) 試樣去除焊縫余高前允許對試樣進行冷校平。 d) 板狀對接焊縫試件上試樣取樣位置見圖 4。 圖4 板材對接焊縫試件上試樣位置圖 拉伸試驗.4.1 取樣和加工要求 a) 試樣的焊縫余高應以機械方法去除,使之與母材齊平。試樣厚度應等于或接近試件母材厚度 T。 b) 厚度小于
10、或等于 30mm 的試件,采用全厚度試樣進行試驗。 c) 當試驗機受能力限制不能進行全厚度的拉伸試驗時,則可將試件在厚度方向上均勻分層取樣,等分后制取試樣厚度應接近試驗機所能試驗的最大厚度。等分后的兩片或多片試樣試驗代替一個全厚度試樣的試驗。 .4.2 試樣形式緊湊型板接頭帶肩板形試樣(見圖 5)適用于所有厚度板狀的對接焊縫試件。圖5 緊湊型板接頭帶肩板形拉伸試樣.4.3合格指標試樣的抗拉強度應不低于母材標準規(guī)定值的下限值。.5 彎曲試驗.5.1 試樣加工要求 試樣的焊縫余高應采用機械方法去除,面彎、背彎試樣的拉伸表面應加工齊平,試樣受拉伸表面不得有劃痕和損傷。 .5.2 試樣形式a) 橫向側(cè)
11、彎試樣見圖6。圖6 橫向側(cè)彎試樣 b) 面彎和背彎試樣見圖 7。 試件厚度 T 為 1038mm ,試樣寬度等于試件厚度。 圖7 面彎和背彎試樣.3 合格指標試樣在彎曲到規(guī)定的角度后,其拉伸面上沿任何方向不得有單條長大于3mm的裂紋和缺陷。試樣的棱角開裂一般不記。.6 沖擊試驗 .6.1 試樣 a) 試樣取向:試樣縱軸應垂直于焊縫軸線,缺口軸線垂直于母材表面。 b) 取樣位置;在試件厚度上的取樣位置見圖 8。 c) 缺口位置:焊縫區(qū)試樣的缺口軸線應位于焊縫中心線上。 熱影響區(qū)試樣的缺口軸線至試樣軸線與熔合線交點的距離大于零,且應盡可能多的通過熱影響區(qū)。 圖8 沖擊試樣位置圖 2.
12、 合格指標 焊接接頭每個區(qū) 3 個試樣為一組的常溫的沖擊吸收功平均值應符合圖樣或相關(guān)技術(shù)文件規(guī)定,且不得小于 27J,至多允許有 1 個試樣的沖擊吸收功低于規(guī)定值,但不低于規(guī)定值的 70%。 角焊縫試件和試樣的檢驗檢驗項目:外觀檢查,金相檢驗(宏觀)外觀檢驗不得有裂紋。金項檢驗焊縫根部應焊透,焊縫和熱影響區(qū)不得有裂紋、未熔合;角焊縫兩焊腳之差不宜大于3mm。 第3章 奧氏體不銹鋼TIG焊的焊接工藝評定焊 接 工 藝 評 定編號: HP001評定單位:德州職業(yè)技術(shù)學院評定日期: 2010年12月焊接工藝評定任務書任務書編號HR001工藝評定編號HP001產(chǎn)品名稱制造
13、編號級別母 材板 材管 材焊 材焊 條焊 絲焊 劑牌號1Gr18Ni9Ti型號H0Gr21Ni10Ti規(guī)格8規(guī)格2;2.5;2.5接頭型式對接焊接方法TiG焊焊接位置水平對接焊預熱和焊后熱處理要求無評定標準鋼制產(chǎn)品焊接試板的力學性能檢測焊縫結(jié)構(gòu)示意圖設(shè)計壓力設(shè)計溫度工作介質(zhì)備注要求檢驗項目外觀檢查無損探傷射線()、超聲( )、表面( )力 學 及 彎 曲 性 能 試 驗項 目拉 伸彎 曲沖 擊試樣數(shù)量焊接接頭全焊縫面彎背彎側(cè)彎焊縫熱影響區(qū)22222宏觀金相微觀金相其他項目編 制日 期審 核日 期焊接工藝評定指導書任務書編號HR001工藝評定編號HP001第1頁產(chǎn)品名稱制造編號共2頁母材板材管材
14、墊板焊絲牌號、規(guī)格底層中間層面層牌號1Gr18Ni9Ti2;2.522.52.5規(guī)格8分類號未列入標準的鋼材或國外鋼材接頭型式對接化學成分焊接方法TiG焊焊接位置水平對接焊試件規(guī)程機械性能清根方法坡口、間隙、焊道分布及順序示意圖焊前予熱加 熱方 式溫 度范 圍層 間溫 度測 溫方 法焊后熱處理種 類加熱方式溫 度范 圍保 溫時 間冷 卻方 式測 溫方 法說明:其他工藝要求執(zhí)行編制的通用焊接工藝守則特殊要求:焊 接 工 藝 參 數(shù)第2頁共2頁焊層序號焊道數(shù)量焊絲牌號焊材規(guī)格mm焊 接電 源焊 接電 流A電 弧電 壓V焊 接速 度cm/min氣體流量L/min線能量KJ/cm種類極性11H0Gr2
15、1Ni10Ti2直流正接9010012165821H0Gr21Ni10Ti2.5直流正接11012012165831H0Gr21Ni10Ti2.5直流正接100110121669施焊設(shè)備型號WS400檢驗項目執(zhí)行標準檢驗項目執(zhí)行標準外觀檢查目測沖擊試驗(常溫、低溫)JB4744無損探傷金相檢驗拉伸試驗JB4744彎曲試驗JB4744備注試件做斷面檢查,斷面無無氣孔、未熔合、未焊透為合格編制日期審核日期焊 接 工 藝 評 定 報 告編號: HP001評定單位:德州職業(yè)技術(shù)學院評定日期: 2010年12月工藝評定(報告)編號HP001通用焊接工藝卡編號HK001第1頁試 件 編 號HS001相應工
16、藝指導書編號HZ001共3頁接頭型式對接焊接方法埋弧自動焊焊接位置水平母材板材管材墊板焊 絲底 層中間層面層牌號1Gr18Ni9TiH0Gr21Ni10Ti22.52.5規(guī)格8代號坡口、間隙、焊道分布及順序示意圖烘干溫度恒溫時間記錄人日期焊條烘干焊劑烘干清根方法未列入標準鋼材或國外鋼材焊前予熱加 熱方 式溫度范圍層間溫度測溫方法化學成分焊后熱處理種類加熱方式溫度范圍保溫時間h冷 卻方 式測 溫方 法機械性能報告編號:焊 接 工 藝 參 數(shù)第2頁 共3頁焊層序號焊道數(shù)量焊絲牌號焊材規(guī)格mm焊 接電 源焊 接電 流A電 弧電 壓V焊 接速 度cm/min氣體流量L/min線能量KJ/cm種類極性1
17、1H0Gr21Ni10Ti2直流正接9010012165821H0Gr21Ni10Ti2.5直流正接11012012165831H0Gr21Ni10Ti2.5直流正接100110121669施工技術(shù)說明:其他技術(shù)要求均應符合通用焊接工藝守則設(shè)備型號:WS400 焊工姓名:環(huán)境溫度:27 焊工鋼印:A相對濕度:40 記錄人: 2010 年 12月26日試件編號:HS001檢 驗 項 目 評 定 結(jié) 果第3頁共3頁檢 驗 項 目評定結(jié)果報告編號日期外觀檢查:無裂紋、夾渣、弧坑和氣孔 檢驗員: 合格射 線 探 傷拍片張數(shù)評定級別拉 伸 試 驗試樣數(shù)量焊接接頭全焊縫合格彎曲試驗面彎背彎側(cè)彎合格沖擊檢驗
18、缺口位置試 驗溫 度合格焊縫熱影響區(qū)金相檢驗宏 觀微 觀合格檢查其他檢驗:綜合評定結(jié)論:試驗過程符合鋼制產(chǎn)品焊接試板的力學性能檢測規(guī)程 試驗結(jié)果合格本評定適用范圍: 板與板對接全焊透焊縫備注編 制日 期審 核日 期批 準日 期第4章 結(jié)束語 TiG焊接技術(shù)在現(xiàn)代焊接領(lǐng)域仍占有不可替代的作用。尤其在低中合金鋼,有色金屬和一些特殊性能鋼的焊接方面,TiG焊接技術(shù)的作用更顯突出。奧氏體不銹鋼是應用最廣泛的不銹鋼,以Gr-Ni型不銹鋼最為普遍。優(yōu)質(zhì)的TiG焊能滿足奧氏體不銹鋼的設(shè)計要求,保證正常的使用壽命。而一旦出現(xiàn)嚴重的焊接缺陷,就會影響常品的使用壽命,甚至給安全生產(chǎn)帶來威脅,引起安全事故。為了防止
19、這些缺陷的產(chǎn)生,對TiG焊技術(shù)進行更深一步探索。通過對質(zhì)量差原因的分析,逐步改善和提高奧氏體TiG焊的焊接質(zhì)量。奧氏體TiG焊的焊接質(zhì)量受到焊接設(shè)備、焊絲、操作技術(shù)水平等的限制。通過對這些限制的深入研究找出造成質(zhì)量差的原因,提出相應措施,解決這些缺陷,使其進一步完善,加以推廣,并對奧氏體不銹鋼的焊接作業(yè)起到一定指導作用。參考文獻1.王新民. 焊接技能實訓: 機械工業(yè)出版社2.烏日根. 焊接質(zhì)量檢測: 化學工業(yè)出版社3.王貴斗. 金屬材料與熱處理: 機械工業(yè)出版社4.鄧洪軍. 金屬熔焊原理: 機械工業(yè)出版社5.雷世明. 焊接方法與設(shè)備: 機械工業(yè)出版社6. 李莉. 焊接結(jié)構(gòu)生產(chǎn): 機械工業(yè)出版社
20、7.李榮雪. 金屬材料焊接工藝: 機械工業(yè)出版社8.馮秋官. 機械制圖與計算機繪圖: 機械工業(yè)出版社9.全國鍋爐壓力容器標準化技術(shù)委員會編. 承壓設(shè)備焊接工程師: 云南科技出版社10.勞動和社會保障部教材辦公室組織編寫. 焊接工藝與技能訓練: 中國勞動和社會保障出版社致 謝感謝李海章老師在論文撰寫過程中給予的指導和幫助。李海章老師一絲不茍的作風,嚴謹求實的態(tài)度,踏踏實實的精神,不僅授我以聞,而且教我做人,雖歷時三載,卻給以終身受益無窮之道。感謝機械工程系全體老師對我的培養(yǎng),向他們表示誠摯的謝意和崇高的敬意。同時也感謝我的同學們?nèi)陙韺ξ业膶W習、生活的關(guān)心和幫助。再次感謝校方、老師特別是指導老師
21、給予的幫助。最后,向我的父親、母親致謝,感謝他們對我的養(yǎng)育之恩。附錄第5章 字符串我們一直在使用字符串,C#中string關(guān)鍵字的映射實際上指向.NET 基類System.String。System.String是一個功能非常強大且用途非常廣泛的基類,但它不是.NET中唯一與字符串相關(guān)的類。其他的用來處理字符串的.NET類還有很多,如System.Text 和 System.Text.Regular Expressions命名空間中的類等等。一、System.String類System.String是一個類,專門用于存儲字符串,允許對字符串進行許多操作。由于這種數(shù)據(jù)類型非常重要,C#提供了它自
22、己的關(guān)鍵字和相關(guān)的語法,以便于使用這個類來處理字符串。使用運算符重載可以連接字符串:string message1 = "Hello" /return "Hello"message1 += ", There" / return "Hello, There "string message2 = message1 + "!" / return "Hello, There!"C#還允許使
23、用類似于索引器的語法來提取指定的字符:char char4 = message4; / returns 'a'. Note the char is zero-indexed這個類可以完成許多常見的任務,例如替換字符、刪除空白和把字母變成大寫形式等??捎玫姆椒ㄈ绫硭尽7?#160; 法作 用Compare比較字符串的內(nèi)容,考慮文化背景(區(qū)域),確定某些字符是否相等CompareOrdinal與Compare一樣,但不考慮文化背景Concat把多個字符串實例合并為一個實例CopyTo把特定數(shù)量的字
24、符從選定的下標復制到數(shù)組的一個全新實例中Format格式化包含各種值的字符串和如何格式化每個值的說明符IndexOf定位字符串中第一次出現(xiàn)某個給定子字符串或字符的位置IndexOfAny定位字符串中第一次出現(xiàn)某個字符或一組字符的位置Insert把一個字符串實例插入到另一個字符串實例的指定索引處Join合并字符串數(shù)組,建立一個新字符串LastIndexOf與IndexOf一樣,但定位最后一次出現(xiàn)的位置 LastIndexOfAny與IndexOfAny,但定位最后一次出現(xiàn)的位置PadLeft在字符串的開頭,通過添加指定的重復字符填充字符串PadRight在字符串的結(jié)尾,通過添加指定的重復字符填充
25、字符串Replace用另一個字符或子字符串替換字符串中給定的字符或子字符串Split在出現(xiàn)給定字符的地方,把字符串拆分為一個子字符串數(shù)組Substring在字符串中獲取給定位置的子字符串ToLower把字符串轉(zhuǎn)換為小寫形式ToUpper把字符串轉(zhuǎn)換為大寫形式Trim刪除首尾的空白 注意:這個表并不完整,但可以讓您明白字符串所提供的功能。1、創(chuàng)建字符串如上所述,string類是一個功能非常強大的類,它執(zhí)行許多很有用的方法。但是,string類存在一個問題:重復修改給定的字符串,效率會很低,它實際上是一個不可變的數(shù)據(jù)類型,一旦對字符串對象進行了初始化,該字符串對象就不能改變了。表面上修改
26、字符串內(nèi)容的方法和運算符實際上是創(chuàng)建一個新的字符串,如果必要,可以把舊字符串的內(nèi)容復制到新字符串中。例如,下面的代碼:string greetingText = "Hello from all the guys at Wrox Press. "greetingText += "We do hope you enjoy this book as much as we enjoyed writing it."在執(zhí)行這段代碼時,首先,創(chuàng)建一個System.String類型的對象,并初始化為文本“Hello from all the guys at Wrox P
27、ress. ”。注意句號后面有一個空格。此時.NET 運行庫會為該字符串分配足夠的內(nèi)存來保存這個文本(39個字符),再設(shè)置變量greetingText,表示這個字符串實例。從語法上看,下一行代碼是把更多的文本添加到字符串中。實際上并非如此,而是創(chuàng)建一個新字符串實例,給它分配足夠的內(nèi)存,以保存合并起來的文本(共103個字符)。最初的文本“Hello from all the people at Wrox Press.”復制到這個新字符串中,再加上額外的文本“We do hope you enjoy this book as much as we enjoyed writing it.”。然后更新
28、存儲在變量greetingText中的地址,使變量正確地指向新的字符串對象。舊的字符串對象被撤銷了引用 不再有變量引用它,下一次垃圾收集器清理應用程序中所有未使用的對象時,就會刪除它。這本身還不壞,但假定要對這個字符串加密,在字母表中,用ASCII碼中的字符替代其中的每個字母(標點符號除外),作為非常簡單的加密模式的一部分,就會把該字符串變成“Ifmmp gspn bmm uif hvst bu Xspy Qsftt. Xf ep ipqf zpv fokpz uijt cppl bt nvdi bt xf fokpzfe xsjujoh ju.”。完成這個任務有好幾種方式,但最簡單、最高效的
29、一種(假定只使用String類)是使用String. Replace()方法,把字符串中指定的子字符串用另一個子字符串代替。使用Replace(),加密文本的代碼如下所示:string greetingText = "Hello from all the guys at Wrox Press. "greetingText += "We do hope you enjoy this book as much as we enjoyed writing it."for(int i = 'z' i>='a' ; i-) c
30、har old1 = (char)i; char new1 = (char)(i+1); greetingText = greetingText.Replace(old1, new1);for(int i = 'Z' i>='A' ; i-) char old1 = (char)i; char new1 = (char)(i+1); greetingText = greetingText.Replace(old1, new1); Console.WriteLine("Encoded:n" + greetingText);注意:Repla
31、ce()以一種智能化的方式工作,在某種程度上,它并沒有創(chuàng)建一個新字符串,除非要對舊字符串進行某些改變。原來的字符串包含23個不同的小寫字母,和3個不同的大寫字母。所以Replace()就分配一個新字符串,共26次,每個新字符串都包含103個字符。因此加密過程需要在堆上有一個能存儲總共2678個字符的字符串對象,最終將等待被垃圾收集!顯然,如果使用字符串進行文字處理,應用程序就會有嚴重的性能問題。為了解決這個問題,Microsoft提供了類。StringBuilder不像String那樣支持非常多的方法。在StringBuilder上可以進行的處理僅限于替換和添加或刪除字符串中的文本。但是,它的
32、工作方式非常高效。在使用String類構(gòu)造一個字符串時,要給它分配足夠的內(nèi)存來保存字符串,但StringBuilder通常分配的內(nèi)存會比需要的更多。開發(fā)人員可以選擇顯式指定StringBuilder要分配多少內(nèi)存,但如果沒有顯式指定,存儲單元量在默認情況下就根據(jù)StringBuilder初始化時的字符串長度來確定。它有兩個主要的屬性: Length指定字符串的實際長度; Capacity是字符串占據(jù)存儲單元的最大長度。對字符串的修改就在賦予String
33、Builder實例的存儲單元中進行,這就大大提高了添加子字符串和替換單個字符的效率。刪除或插入子字符串仍然效率低下,因為這需要移動隨后的字符串。只有執(zhí)行擴展字符串容量的操作,才需要給字符串分配新內(nèi)存,才可能移動包含的整個字符串。在添加額外的容量時,從經(jīng)驗來看,StringBuilder如果檢測到容量超出,且容量沒有設(shè)置新值,就會使自己的容量翻倍。例如,如果使用StringBuilder對象構(gòu)造最初的歡迎字符串,可以編寫下面的代碼:StringBuilder greetingBuilder = new StringBuilder("Hello from all
34、the guys at Wrox Press. ", 150);greetingBuilder.AppendFormat("We do hope you enjoy this book as much as we enjoyed writing it&q
35、uot;); 注意:為了使用StringBuilder類,需要在代碼中引用System.Text。在這段代碼中,為StringBuilder設(shè)置的初始容量是150。最好把容量設(shè)置為字符串可能的最大長度,確保StringBuilder不需要重新分配內(nèi)存,因為其容量足夠用了。理論上,可以設(shè)置盡可能大的數(shù)字,足夠給該容量傳送一個
36、int,但如果實際上給字符串分配20億個字符的空間(這是StringBuilder實例允許擁有的最大理論空間),系統(tǒng)就可能會沒有足夠的內(nèi)存。在調(diào)用Append()方法時,其他文本就放在空的空間中,不需要分配更多的內(nèi)存。但是,多次替換文本才能獲得使用StringBuilder所帶來的性能提高。例如,如果要以前面的方式加密文本,就可以執(zhí)行整個加密過程,無須分配更多的內(nèi)存:StringBuilder greetingBuilder = new StringBuilder("Hello from all the guys at Wrox Press. &q
37、uot;, 150);greetingBuilder.Append("We do hope you enjoy this book as much as we " + "enjoyed writing it"); Console.WriteLine("Not Encoded:n" + greetingBuilder);for(int i = 'z' i>='a' ; i-) char old1 = (char)i; char new1 =
38、(char)(i+1); greetingBuilder = greetingBuilder.Replace(old1, new1);for(int i = 'Z' i>='A' ; i ) char old1 = (char)i; char new1 = (char)(i+1); greetingBuilder = greetingBuilder.Replace(old1, new1);Console.WriteLine("E
39、ncoded:n" + greetingBuilder);這段代碼使用了StringBuilder.Replace()方法,它的功能與String.Replace()一樣,但不需要在過程中復制字符串。在上述代碼中,為存儲字符串而分配的總存儲單元是150個字符,用于StringBuilder實例以及在最后一個Console.WriteLine()語句中執(zhí)行字符串操作期間分配的內(nèi)存。一般,使用StringBuilder可以執(zhí)行字符串的操作,String可以存儲字符串或顯示最終結(jié)果。2 StringBuilder成員前面介紹了StringBuilder的一個構(gòu)造函數(shù),它的參數(shù)是
40、一個初始字符串及該字符串的容量。還有幾個其他的StringBuilder構(gòu)造函數(shù),例如,可以只提供一個字符串:StringBuilder sb = new StringBuilder("Hello");或者用給定的容量創(chuàng)建一個空的StringBuilder:StringBuilder sb = new StringBuilder(20);除了前面介紹的Length 和 Capacity屬性外,還有一個只讀屬性MaxCapacity,它表示對給定的StringBuilder實例的容量限制。在默認情況下,這由int.MaxValue給定(大約20億,如前所述)。但在構(gòu)造Stri
41、ngBuilder對象時,也可以把這個值設(shè)置為較低的值:/ This will both set initial capacity to 100, but the max will be 500./ Hence, this StringBuilder can never grow to more than 500 characters,/ otherwise it will raise exception if you try to do that.StringBuilder sb = new StringBuilder(100, 500);還可以隨時顯式地設(shè)置容量,但如果把這個值設(shè)置為低于字
42、符串的當前長度,或者超出了最大容量,就會拋出一個異常:StringBuilder sb = new StringBuilder("Hello");sb.Capacity = 100;主要的StringBuilder方法如表所示。 名 稱作 用Append()給當前字符串添加一個字符串AppendFormat()添加特定格式的字符串Insert()在當前字符串中插入一個子字符串Remove()從當前字符串中刪除字符Replace()在當前字符串中,用某個字符替換另一個字符,或者用當前字符串中的一個子字符串
43、替換另一字符串ToString()把當前字符串轉(zhuǎn)換為System.String對象(在System.Object中被重寫) 其中一些方法還有幾種格式的重載方法。注意:AppendFormat()實際上會在調(diào)用Console.WriteLine()時調(diào)用,它負責確定所有像0:D的格式化表達式應使用什么表達式替代。下一節(jié)討論這個問題。不能把StringBuilder轉(zhuǎn)換為String(隱式轉(zhuǎn)換和顯式轉(zhuǎn)換都不行)。如果要把StringBuilder的內(nèi)容輸出為String,唯一的方式是使用ToString()方法。前面介紹了StringBuilder類,說明了使用它提高性能的一些方式。注意
44、,這個類并不總能提高性能。StringBuilder類基本上應在處理多個字符串時使用。但如果只是連接兩個字符串,使用System.String會比較好。3、格式化字符串前面的代碼示例中編寫了許多類和結(jié)構(gòu),對這些類和結(jié)構(gòu)執(zhí)行ToString()方法,都是為了顯示給定變量的內(nèi)容。但是,用戶常常希望以各種可能的方式顯示變量的內(nèi)容,在不同的文化或地區(qū)背景中有不同的格式。.NET基類System.DateTime就是最明顯的一個示例:可以把日期顯示為10 June 2008、10 Jun 2008、6/10/08 (美國)、10/6/08 (英國)或10.06.2008 (德國)。同樣,第6章中編寫的V
45、ector結(jié)構(gòu)執(zhí)行Vector.ToString()方法,是為了以(4, 56, 8)格式顯示矢量。編寫矢量的另一個非常常用的方式是4i + 56j + 8k。如果要使類的用戶友好性比較高,就需要使用某些工具以用戶希望的方式顯示它們的字符串表示。.NET運行庫定義了一種標準方式:使用接口IFormattable,本節(jié)的主題就是說明如何把這個重要特性添加到類和結(jié)構(gòu)上。在顯示一個變量時,常常需要指定它的格式,此時我們經(jīng)常調(diào)用Console.WriteLine()方法。因此,我們把這個方法作為示例,但這里的討論適用于格式化字符串的大多數(shù)情況。例如,如果要在列表框或文本框中顯示一個變量的值,一般要使用
46、String.Format()方法來獲得該變量的合適字符串表示,但用于請求所需格式的格式說明符與傳遞給Console.WriteLine()的格式相同,因此本節(jié)把Console.WriteLine()作為一個示例來說明。首先看看在為基本類型提供格式字符串時會發(fā)生什么,再看看如何把自己的類和結(jié)構(gòu)的格式說明符添加到過程中。以前在Console.Write()和Console.WriteLine()中使用了格式字符串:double d = 13.45;int i = 45;Console.WriteLine("The double is 0,10:E and the int contain
47、s 1", d, i);格式字符串本身大都由要顯示的文本組成,但只要有要格式化的變量,它在參數(shù)列表中的下標就必須放在括號中。在括號中還可以有與該項的格式相關(guān)的其他信息,例如可以包含: 該項的字符串表示要占用的字符數(shù),這個信息的前面應有一個逗號,負值表示該項應左對齊,正值表示該項應右對齊。如果該項占用的字符數(shù)比給定的多,其內(nèi)容也會完整地顯示出來。 格式說明符也可以顯示出來。它的前面應有一個冒號,表示應如何格式化該項。例如,把一個數(shù)字格式化為貨幣
48、,或者以科學計數(shù)法顯示。數(shù)字類型的常見格式說明符: 格 式 符應 用含 義示 例C數(shù)字類型 專用場合的貨幣值$4834.50 (USA)£4834.50 (UK)D只用于整數(shù)類型一般的整數(shù)4834E數(shù)字類型科學計數(shù)法4.834E+003F數(shù)字類型小數(shù)點后的位數(shù)固定4384.50G數(shù)字類型一般的數(shù)字4384.5N數(shù)字類型通常是專用場合的數(shù)字格式4,384.50 (UK/USA)4 384,50 (歐洲大陸)P數(shù)字類型百分比計數(shù)法432,000.00%X只用于整數(shù)類型十六進制格式1120 (如果要顯示0x1120,需要
49、寫上0x)如果要在整數(shù)上加上前導0,可以將格式說明符0重復所需的次數(shù)。例如,格式說明符0000會把3顯示為0003,99顯示為0099。這里不能給出完整的列表,因為其他數(shù)據(jù)類型有自己的格式說明符。本節(jié)的主要目的是說明如何為自己的類定義格式說明符。1. 字符串的格式化為了說明如何格式化字符串,看看執(zhí)行下面的語句會得到什么結(jié)果:Console.WriteLine("The double is 0,10:E and the int contains 1", d, i);Console.WriteLine()只是把參數(shù)的完整列表傳送給靜態(tài)方法String.Format(),如果要在
50、字符串中以其他方式格式化這些值,例如顯示在一個文本框中,也可以調(diào)用這個方法。帶有3個參數(shù)的WriteLine()重載方法如下:/ Likely implementation of Console.WriteLine()public void WriteLine(string format, object arg0, object arg1) Console.WriteLine(string.Format(format, arg0, arg1);上面的代碼依次調(diào)用了帶有1個參數(shù)的重載方法WriteLine(),僅顯示了傳遞過來的字符串的內(nèi)容,沒有對它進行進一步的格式化。String.Format()現(xiàn)在需要用對應對象的合適字符串表示來替換每個格式說明符,構(gòu)造最終的字符串。但是,如前所述,對于這個建立字符串的過程,需要StringBuilder實例,而不是String實例。在這個示例中,StringBuilder實例是用字符串的第一部分(即文本“The double is”)創(chuàng)建和初始化的。然后調(diào)用StringBuilder.AppendFormat()方法,傳遞第一個格式說明符“0,10:E”和相應的對象double,把這個對象的字符串表示添加到構(gòu)造好的字符串中,這個過程會繼續(xù)重復調(diào)用StringBuilder.Append()和StringBuilder
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國健康管理行業(yè)發(fā)展趨勢與投資效益預測報告
- 2024年浙江嘉興教育學院輔導員考試真題
- 2024年東莞市大嶺山鎮(zhèn)公辦中小學招聘教師筆試真題
- 施工安全事故管理制度
- 中職護理實訓室管理制度
- 無線電臺設(shè)備管理制度
- 搭石課件運用介紹
- 開通網(wǎng)絡(luò)信息化管理制度
- 觸變劑項目投資風險評估報告
- 插花藝術(shù)說課課件
- 2024-2025學年七年下學期期末測試卷(英語)人教版(含答案無聽力部分)
- 新疆昆玉經(jīng)濟技術(shù)開發(fā)區(qū)招聘考試真題2024
- 寵物店鋪轉(zhuǎn)讓合同協(xié)議書
- T/CAEPI 70-2023水泥窯協(xié)同處置生活垃圾焚燒飛灰水洗除鹽工藝技術(shù)要求
- 高支模質(zhì)量問題的分析與整改
- 計算機體系結(jié)構(gòu)計算題示例答案
- 2025年事業(yè)單位聯(lián)考a真題及答案
- 企業(yè)運營與發(fā)展-形考任務一-國開(ZJ)-參考資料
- 校園食品安全與傳染病防控教育專題培訓
- 幼兒園教師超輕黏土培訓
- 人工智能法治領(lǐng)域創(chuàng)新型人才培養(yǎng)研究
評論
0/150
提交評論