高效編程之首字符大小寫(xiě)轉(zhuǎn)換蹄梢!

眾所周知疙筹,Spring是最為最流行的框架,其源碼寫(xiě)得非常棒=础6亍!
Spring注入一個(gè)類(lèi)的時(shí)候幕袱,BeanFactory 收到的一個(gè)類(lèi)名暴备, 類(lèi)名都是首字母大寫(xiě)的,但是注入使用的確是首字母小寫(xiě)们豌,這就引發(fā)了思考涯捻,spring是怎么把首字母大寫(xiě)轉(zhuǎn)小寫(xiě)的呢?
辦法有很多望迎,比如截取字符串改了放回去之類(lèi)的障癌;這里介紹一個(gè)最高效的方法。 用的是字符編碼相關(guān)的知識(shí)點(diǎn)擂煞。
先上代碼:

package cn.com.ddh;
public class TestAscii {
    public static void main(String[] args) {
            String s = "Abc";
            char[] c = s.toCharArray();
            c[0] = (char) (c[0]+(32)); //ASCII 
            c.toString();
            System.out.println(c);
    }
}

輸入結(jié)果:abc

首先我們把字符串"Abc" 轉(zhuǎn)成字符數(shù)組混弥,然后C[0] 肯定就是首字母了,C[0]是A对省,A在ASCII碼中是第65位蝗拿,而在ASCII碼中 大寫(xiě)字母和小寫(xiě)字母差了32個(gè)位置;
所以為了得到小寫(xiě)字母a 蒿涎,我們可以將A+32 哀托,32是int類(lèi)型 需要將結(jié)果強(qiáng)轉(zhuǎn),就能得到想要的小寫(xiě)字母 a了劳秋;

順便再介紹一下仓手,為什么可以按ASCII碼的規(guī)矩就能講大寫(xiě)字母轉(zhuǎn)小寫(xiě)了:
首先我們寫(xiě)的 .Java 文件會(huì)被JVM編譯成 .class文件 .Java文件 被JVM 轉(zhuǎn)為.class文件后胖齐, 代碼里的字符和字符串都是按unicode格式存在的
而unicode碼的的前128位和 ASCII碼的128位是一樣的;所以我們可以直接使用

c[0] = (char) (c[0]+(32)); //ASCII 

這樣的方式來(lái)處理嗽冒!好的 簡(jiǎn)單的部分到這里就結(jié)束了呀伙,下面的啰嗦是普及一下編碼知識(shí):
nicode 和 ASCII 的故事就多了 這里就不做延伸了,稍微簡(jiǎn)單的說(shuō)下:
美國(guó)人用的是英文添坊,他們發(fā)明了ASCII碼 只用128位(0是第一位)就足夠表示字母了剿另,就夠他們使用了,當(dāng)時(shí)的美帝可能都沒(méi)有想到除了他們還有其他人能夠使用計(jì)算機(jī)就壓根沒(méi)替我們中國(guó)人贬蛙,亞洲人著想雨女。 后來(lái)不同國(guó)家的人把128-255位用來(lái)處理自己國(guó)家的語(yǔ)言;

但是美帝沒(méi)良心阳准,但是美帝的程序員有良心啊氛堕,他們后來(lái)為全世界的人們發(fā)明了unicode碼;

unicode碼,無(wú)論是半角的英文字母野蝇,還是全角的漢字讼稚,它們都是統(tǒng)一的一個(gè)字符,同時(shí)浪耘,也都是統(tǒng)一的兩個(gè)字節(jié)乱灵,請(qǐng)注意”字符”和”字節(jié)”兩個(gè)術(shù)語(yǔ)的不同,字節(jié)是一個(gè)8位的物理存貯單元七冲,而字符則是一個(gè)文化相關(guān)的符號(hào)痛倚。在unicode中,一個(gè)字符就是兩個(gè)字節(jié)澜躺。那我有時(shí)候只是用個(gè)英文本來(lái)只要一個(gè)字節(jié)蝉稳,結(jié)果現(xiàn)在用了unicode卻要兩個(gè)字節(jié)了,這unicode不是傻逼么掘鄙? 所以u(píng)nicode編碼在很長(zhǎng)的一段時(shí)間都無(wú)法得到推廣耘戚,隨著互聯(lián)網(wǎng)時(shí)代的到來(lái),網(wǎng)絡(luò)傳輸可是個(gè)大問(wèn)題安倌收津!這時(shí)候?yàn)榻鉀Qunicode如何在網(wǎng)絡(luò)上傳輸?shù)膯?wèn)題,美帝的那幫程序員又來(lái)了浊伙,他們推廣了面向傳輸?shù)谋姸郩TF(UCS Transfer Format)標(biāo)準(zhǔn)出現(xiàn)了撞秋,顧名思義,UTF-8就是每次8個(gè)位傳輸數(shù)據(jù)嚣鄙,而UTF-16就是每次16個(gè)位吻贿。UTF-8就是在互聯(lián)網(wǎng)上使用最廣的一種unicode的實(shí)現(xiàn)方式,這是為傳輸而設(shè)計(jì)的編碼哑子,并使編碼無(wú)國(guó)界舅列,這樣就可以顯示全世界上所有文化的字符了肌割。

UTF-8最大的一個(gè)特點(diǎn),就是它是一種變長(zhǎng)的編碼方式帐要。它可以使用1~4個(gè)字節(jié)表示一個(gè)符號(hào)把敞,根據(jù)不同的符號(hào)而變化字節(jié)長(zhǎng)度,當(dāng)字符在ASCII碼的范圍時(shí)宠叼,就用一個(gè)字節(jié)表示先巴,保留了ASCII字符一個(gè)字節(jié)的編碼做為它的一部分其爵,注意的是unicode一個(gè)中文字符占2個(gè)字節(jié)冒冬,而UTF-8一個(gè)中文字符占3個(gè)字節(jié))。從unicode到uft-8并不是直接的對(duì)應(yīng)摩渺,而是要過(guò)一些算法和規(guī)則來(lái)轉(zhuǎn)換。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市颅痊,隨后出現(xiàn)的幾起案子顷锰,更是在濱河造成了極大的恐慌,老刑警劉巖绰姻,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枉侧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡狂芋,警方通過(guò)查閱死者的電腦和手機(jī)榨馁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)帜矾,“玉大人翼虫,你說(shuō)我怎么就攤上這事÷庞” “怎么了珍剑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)死陆。 經(jīng)常有香客問(wèn)我招拙,道長(zhǎng),這世上最難降的妖魔是什么措译? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任别凤,我火速辦了婚禮,結(jié)果婚禮上瞳遍,老公的妹妹穿的比我還像新娘闻妓。我一直安慰自己,他們只是感情好掠械,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布由缆。 她就那樣靜靜地躺著注祖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪均唉。 梳的紋絲不亂的頭發(fā)上是晨,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音舔箭,去河邊找鬼罩缴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛层扶,可吹牛的內(nèi)容都是我干的箫章。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼镜会,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼檬寂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起戳表,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤桶至,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后匾旭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體镣屹,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年价涝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了女蜈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡飒泻,死狀恐怖鞭光,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情泞遗,我是刑警寧澤惰许,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站史辙,受9級(jí)特大地震影響汹买,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜聊倔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一晦毙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耙蔑,春花似錦见妒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盐股。三九已至,卻和暖如春耻卡,著一層夾襖步出監(jiān)牢的瞬間疯汁,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工卵酪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幌蚊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓溃卡,卻偏偏與公主長(zhǎng)得像溢豆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子塑煎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容