c語言中data函數(shù)的用法 在C 編程中,領(lǐng)導(dǎo)堅(jiān)持用char而不用string,string有那么可怕嗎?
在C 編程中,領(lǐng)導(dǎo)堅(jiān)持用char而不用string,string有那么可怕嗎?在C中優(yōu)先使用字符串是一個(gè)好習(xí)慣。除非C的頑固習(xí)慣,否則應(yīng)該使用字符串而不是字符。Char用于處理任何8位數(shù)據(jù)類型,如邏
在C 編程中,領(lǐng)導(dǎo)堅(jiān)持用char而不用string,string有那么可怕嗎?
在C中優(yōu)先使用字符串是一個(gè)好習(xí)慣。除非C的頑固習(xí)慣,否則應(yīng)該使用字符串而不是字符。
Char用于處理任何8位數(shù)據(jù)類型,如邏輯值、整數(shù)、字符ASCII碼等。要處理字符串,需要使用Char[]數(shù)組,這很麻煩,也很難控制。
String是一個(gè)模板類,專門用于處理字符串,并封裝了許多成員函數(shù)來處理字符串。它是C標(biāo)準(zhǔn)庫的一部分,所有C實(shí)現(xiàn)都支持它,并由C創(chuàng)始人推薦。
選擇使用哪一種并不困難。
JAVA中為什么String比StringBuffer的處理效率更高?
事實(shí)上,字符串和StringBuffer都用于Java中的字符串處理。當(dāng)然,這兩個(gè)類通常與StringBuilder進(jìn)行比較。
實(shí)際上,string、StringBuilder和StringBuffer都是基于字符數(shù)組實(shí)現(xiàn)的(jdk8是基于字節(jié)數(shù)組實(shí)現(xiàn)的)。但是這三者之間有什么相同點(diǎn)和不同點(diǎn)呢?
其中字符串類由final修改,因此其值是不可變的。當(dāng)然,你也會(huì)有疑問,不能用“”進(jìn)行字符串拼接操作,對(duì)嗎?我打印了那個(gè)值,它確實(shí)改變了。在這方面,我需要解釋一下,所謂的字符串拼接就是在生成新字符串之后,將新生成的字符串賦給原始變量。當(dāng)然,還將有一個(gè)操作來確定字符串常量池中是否已經(jīng)存在字符串值。但無論如何操作,最終的結(jié)果都是拼接后用新字符串替換舊字符串,或者重新賦值字符串變量。
StringBuffer和StringBuilder的值是可變的。如果只是在日常生活中使用,它們之間沒有太大區(qū)別。但是,在多線程環(huán)境中使用StringBuffer效率較低。因?yàn)镾tringBuffer的方法是由synchronized關(guān)鍵字修改的,也就是說,當(dāng)StringBuffer被多個(gè)線程共享時(shí),會(huì)出現(xiàn)鎖爭用和等待問題,導(dǎo)致時(shí)間消耗增加。StringBuilder沒有限制,但它容易出現(xiàn)線程安全問題。
因此,行業(yè)使用習(xí)慣是在單線程中使用StringBuilder,在多線程中使用StringBuffer。