天天看點

java中一個漢字和一個字母所占記憶體位元組比較以及背景驗證的減半處理

基本概念

我們一般了解java中

一個字元char占2個位元組byte

一個漢字占2個位元組byte

一個字母占1個位元組byte

其他情況

對于漢字來說,采用gbk編碼占兩位元組,采用utf8編碼占三個位元組。

string的length()方法

string s1 = "aa";

string s2 = "a好";

s1.length()

s2.length()

答案都是2,因為該方法是傳回字元的個數,并不是記憶體中的位元組數。

資料庫應用

java的編碼不會影響資料庫對漢字或者字母所占記憶體的了解。

資料庫中一個字段長度為varchar(50),表明在記憶體中占50個位元組,是以我們一般認為可以輸入25個漢字,50個字母。

如果該内容即可以是漢字,也可以是字母,我們在背景驗證的時候一般減半處理。

if(name.length()<25){ }

當然也可以判斷如果是漢字,長度加1。