Java 大小寫(xiě)最快轉(zhuǎn)換方式實(shí)例代碼
Java 大小寫(xiě)最快轉(zhuǎn)換方式實(shí)例代碼
這里直接給出實(shí)現(xiàn)代碼,在代碼中注釋都很清楚,不多做介紹。
Java代碼
package io.mycat;
import java.util.stream.IntStream;
/**
* 小寫(xiě)字母的 'a'=97 大寫(xiě)字母 A=65 更好相差32利用這個(gè)差進(jìn)行大小寫(xiě)轉(zhuǎn)換
* @author : Hpgary
* @date : 2017年5月3日 10:26:26
* @mail: hpgary@qq.com
* */
public class StringUtils {
protected final static byte[] CHAR_TYPE = new byte[512];
protected final static byte CHARACTER_DIFFER = 32;
static {
/**
* 先將大寫(xiě)字母放入 CHAR_TYPE 中,將大寫(xiě)轉(zhuǎn)換成為小寫(xiě)字母
* */
IntStream.rangeClosed('A', 'Z').forEach(c -> CHAR_TYPE[c] = (byte) (c + CHARACTER_DIFFER));
/**
* 將小寫(xiě)字母放入 CHAR_TYPE,存值為小寫(xiě)字母
* */
IntStream.rangeClosed('a', 'z').forEach(c -> CHAR_TYPE[c] = (byte) (c));
}
public static byte[] toUpperCase(String src) {
byte[] bytes = src.getBytes();
for (int x = 0; x < bytes.length; x++) {
int tmpLen = bytes[x] << 1;
if (tmpLen < CHAR_TYPE.length && tmpLen >= 0) {
byte b = CHAR_TYPE[bytes[x]];
if (b != 0) {
bytes[x] = (byte) (b - CHARACTER_DIFFER);
}
}
}
return bytes;
}
public static byte[] toLowerCase(String src) {
byte[] bytes = src.getBytes();
for (int x = 0; x < bytes.length; x++) {
int tmpLen = bytes[x] << 1;
if (tmpLen < CHAR_TYPE.length && tmpLen >= 0) {
byte b = CHAR_TYPE[bytes[x]];
if (b != 0) {
bytes[x] = b;
}
}
}
return bytes;
}
public static void main(String[] args) {
int count = 100000 ;
String str = "fdajfadSKfj1221SDKfdasfdsafjdsafjlsadjfkl;sdajflksadjlfkjasdlk;fjasdklfasdA" ;
long time2 = System.currentTimeMillis();
for (int x = 0; x < count; x++) {
str.toUpperCase();
}
System.out.println(System.currentTimeMillis() - time2); //51 - 53
long time1 = System.currentTimeMillis();
for (int x = 0; x < count; x++) {
toUpperCase(str) ;
}
System.out.println(System.currentTimeMillis() - time1); // 35-37
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!如有疑問(wèn)請(qǐng)留言,或者到本站社區(qū)討論!
相關(guān)文章
java實(shí)現(xiàn)輸出字符串中第一個(gè)出現(xiàn)不重復(fù)的字符詳解
這篇文章主要介紹了java實(shí)現(xiàn)輸出字符串中第一個(gè)出現(xiàn)不重復(fù)的字符詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
利用Java實(shí)現(xiàn)word導(dǎo)入導(dǎo)出富文本(含圖片)的詳細(xì)代碼
這篇文章主要為大家詳細(xì)介紹了利用Java實(shí)現(xiàn)word導(dǎo)入導(dǎo)出富文本(含圖片),文中的示例代碼講解詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下2024-02-02
java將一個(gè)整數(shù)轉(zhuǎn)化成二進(jìn)制代碼示例
這篇文章主要介紹了java將一個(gè)整數(shù)轉(zhuǎn)化成二進(jìn)制代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12
Springboot項(xiàng)目編譯后未能加載靜態(tài)資源文件的問(wèn)題
這篇文章主要介紹了Springboot項(xiàng)目編譯后未能加載靜態(tài)資源文件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
JAVA基礎(chǔ)類庫(kù)之String類,StringBuffer類和StringBuilder類
這篇文章主要介紹了Java中基礎(chǔ)類庫(kù)的String類,StringBuffer類和StringBuilder類,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2021-09-09
mybatis 在typeAliases別名時(shí)報(bào)錯(cuò)的解決
這篇文章主要介紹了mybatis 在typeAliases別名時(shí)報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
啟動(dòng) Eclipse 彈出 Failed to load the JNI shared library jvm.dll
這篇文章主要介紹了有時(shí)候,新電腦上回碰到打開(kāi)Eclipse時(shí),彈出提示“Failed to load the JNI shared library jvm.dll”錯(cuò)誤,這里給大家分享解決方案2016-08-08
解決SpringBoot在后臺(tái)接收前臺(tái)傳遞對(duì)象方式的問(wèn)題
這篇文章主要介紹了解決SpringBoot在后臺(tái)接收前臺(tái)傳遞對(duì)象方式的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
jfinal添加jcaptcha驗(yàn)證碼實(shí)現(xiàn)方法
這篇文章主要介紹了jfinal的jcaptcha驗(yàn)證碼實(shí)現(xiàn)方法,大家參考使用吧2014-01-01
基于Spring中的事務(wù)@Transactional細(xì)節(jié)與易錯(cuò)點(diǎn)、幻讀
這篇文章主要介紹了基于Spring中的事務(wù)@Transactional細(xì)節(jié)與易錯(cuò)點(diǎn)、幻讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

