A. java字元串長度怎麼算
通過String自帶的length()方法獲取字元串長度。
Stringa="abcdefg";//定義一個字元串
intlen=a.length();//通過length獲取字元串長度,這里等於7
B. java中定義一漢字的變數並輸出長度
charlength等於0,system.out.println(length)。
java有八種數據類型,用來添加漢字的數據類型屬於字元型,用char表示,然後根據賦值使用列印語句輸出漢字的長度。
char是Java中的保留字,與別的語言不同的是,char在Java中是16位的,因為Java用的是Unicode,不過8位的ASCII碼包含在Unicode中,是從0~127。
C. 如何計算中文字元的長度java
通過String自帶的length()方法獲取字元串長度。
String a="abcdefg";//定義一個字元串
int len = a.length();//通過length獲取字元串長度,這里等於7
length()該方法返回此字元串的長度。長度是等於Unicode代碼單元中的字元串的數目。
D. java中字元大小問題
你的理解有誤,呵呵,通俗點說吧:
給你兩個房子,都是100平米,一個裡面裝個豬,一個裡面裝只雞,你可以說房子大小相等,你能說
豬和雞大小相等么?
豬有豬的編碼,雞有雞的編碼,各自都不一樣!
另外,2個位元組,看似很渺小,一個位元組8個比特位,可以表示2的8次方既:256種狀態
兩個位元組:2的16次方,65536種狀態,這算完事了嗎?告訴你沒呢..
下面是掃盲:你認真看,是我復制知乎大佬的,對你以後絕對幫助很大:
各位路過朋友看完後,如果覺得不錯點個贊謝謝...
很久很久以前,有一群人,他們決定用8個可以開合的晶體管來組合成不同的狀態,以表示世界上的萬物。
他們看到8個開關狀態是好的,於是他們把這稱為」位元組「。
再後來,他們又做了一些可以處理這些位元組的機器,機器開動了,可以用位元組來組合出很多狀態,狀態開始變來變去。
他們看到這樣是好的,於是它們就這機器稱為」計算機「。
開始計算機只在美國用。八位的位元組一共可以組合出256(2的8次方)種不同的狀態。
他們把其中的編號從0開始的32種狀態分別規定了特殊的用途,一但終端、列印機遇上約定好的這些位元組被傳過來時,就要做一些約定的動作:
遇上0×10, 終端就換行;
遇上0×07, 終端就向人們嘟嘟叫;
遇上0x1b, 列印機就列印反白的字,或者終端就用彩色顯示字母。
他們看到這樣很好,於是就把這些0×20以下的位元組狀態稱為」控制碼」。
他們又把所有的空 格、標點符號、數字、大小寫字母分別用連續的位元組狀態表示,一直編到了第127號,這樣計算機就可以用不同位元組來存儲英語的文字了。
大家看到這樣,都感覺 很好,於是大家都把這個方案叫做 ANSI 的」Ascii」編碼(American Standard Code for Information Interchange,美國信息互換標准代碼)。
當時世界上所有的計算機都用同樣的ASCII方案來保存英文文字。
後來,就像建造巴比倫塔一樣,世界各地都開始使用計算機,但是很多國家用的不是英文,他們的字母里有許多是ASCII里沒有的,為了可以在計算機保存他們的文字
他們決定採用 127號之後的空位來表示這些新的字母、符號,還加入了很多畫表格時需要用下到的橫線、豎線、交叉等形狀,一直把序號編到了最後一個狀態255。
從128 到255這一頁的字元集被稱」擴展字元集「。
從此之後,貪婪的人類再沒有新的狀態可以用了,美帝國主義可能沒有想到還有第三世界國家的人們也希望可以用到計算機吧!
等中國人們得到計算機時,已經沒有可以利用的位元組狀態來表示漢字,況且有6000多個常用漢字需要保存呢。
但是這難不倒智慧的中國人民,我們不客氣地把那些127號之後的奇異符號們直接取消掉, 規定:一個小於127的字元的意義與原來相同,但兩個大於127的字元連在一起時,就表示一個漢字
前面的一個位元組(他稱之為高位元組)從0xA1用到0xF7
後面一個位元組(低位元組)從0xA1到0xFE
這樣我們就可以組合出大約7000多個簡體漢字了。
在這些編碼里,我們還把數學符號、羅馬希臘的字母、日文的假名們都編進去了,連在 ASCII 里本來就有的數字、標點、字母都統統重新編了兩個位元組長的編碼,這就是常說的」全形」字元,而原來在127號以下的那些就叫」半形」字元了。
中國人民看到這樣很不錯,於是就把這種漢字方案叫做 「GB2312「。
GB2312 是對 ASCII 的中文擴展。但是中國的漢字太多了,我們很快就就發現有許多人的人名沒有辦法在這里打出來,特別是某些很會麻煩別人。
於是我們不得不繼續把GB2312 沒有用到的碼位找出來老實不客氣地用上。
後來還是不夠用,於是乾脆不再要求低位元組一定是127號之後的內碼,只要第一個位元組是大於127就固定表示這是一個漢字的開始,不管後面跟的是不是擴展字元集里的內容。
結果擴展之後的編碼方案被稱為 GBK 標准,GBK包括了GB2312 的所有內容,同時又增加了近20000個新的漢字(包括繁體字)和符號。
後來少數民族也要用電腦了,於是我們再擴展,又加了幾千個新的少數民族的字,GBK擴成了 GB18030。
從此之後,中華民族的文化就可以在計算機時代中傳承了。
中國的程序員們看到這一系列漢字編碼的標準是好的,於是通稱他們叫做 「DBCS「(Double Byte Charecter Set 雙位元組字元集)。
在DBCS系列標准里,最大的特點是兩位元組長的漢字字元和一位元組長的英文字元並存於同一套編碼方案里,因此他們寫的程序為了支持中文處理,必須要注意字串里的每一個位元組的值,如果這個值是大於127的,那麼就認為一個雙位元組字元集里的字元出現了。
那時候凡是受過加持,會編程的計算機僧侶們都要每天念下面這個咒語數百遍: 「一個漢字算兩個英文字元!一個漢字算兩個英文字元……」因為當時各個國家都像中國這樣搞出一套自己的編碼標准,結果互相之間誰也不懂誰的編碼,誰也不支持別人的編碼,連大陸和台灣這樣只相隔了150海里,使用著同一種語言的兄弟地區,也分別採用了不同的 DBCS 編碼方案——當時的中國人想讓電腦顯示漢字,就必須裝上一個」漢字系統」
專門用來處理漢字的顯示、輸入的問題,像是那個台灣的愚昧封建人士寫的算命程序就必須加裝另一套支持 BIG5 編碼的什麼」倚天漢字系統」才可以用,裝錯了字元系統,顯示就會亂了套!這怎麼辦?
而且世界民族之林中還有那些一時用不上電腦的窮苦人民,他們的文字又怎麼辦?
真是計算機的巴比倫塔命題啊!
正在這時,大天使加百列及時出現了——一個叫 ISO(國際標誰化組織)的國際組織決定著手解決這個問題。
他們採用的方法很簡單:廢了所有的地區性編碼方案,重新搞一個包括了地球上所有文化、所有字母和符號 的編碼!
他們打算叫它」Universal Multiple-Octet Coded Character Set」,簡稱 UCS, 俗稱 「unicode「。
unicode開始制訂時,計算機的存儲器容量極大地發展了,空間再也不成為問題了。
於是 ISO 就直接規定必須用兩個位元組,也就是16位來統一表示所有的字元,對於ASCII里的那些「半形」字元,unicode包持其原編碼不變,只是將其長度由原來的8位擴展為16位,而其他文化和語言的字元則全部重新統一編碼。由於」半形」英文符號只需要用到低8位,所以其高8位永遠是0,因此這種大氣的方案在保存英文文本時會多浪費一倍的空間。
這時候,從舊社會里走過來的程序員開始發現一個奇怪的現象:他們的 strlen 函數靠不住了,一個漢字不再是相當於兩個字元了,而是一個!
是的,從unicode開始,無論是半形的英文字母,還是全形的漢字,它們都是統一的」一個字元「!
同時,也都是統一的」兩個位元組「,請注意」字元」和」位元組」兩個術語的不同,「位元組」是一個8位的物理存貯單元,而「字元」則是一個文化相關的符號。
在unicode中,一個字元就是兩個位元組。一個漢字算兩個英文字元的時代已經快過去了。unicode同樣也不完美,這里就有兩個的問題,一個是,如何才能區別unicode和ascii?
計算機怎麼知道三個位元組表示一個符號,而不是分別表示三個符號呢?
第二個問題是,我們已經知道,英文字母只用一個位元組表示就夠了,如果unicode統一規定,每個符號用三個或四個位元組表示,那麼每個英文字母前都必然有二到三個位元組是0,這對於存儲空間來說是極大的浪費,文本文件的大小會因此大出二三倍,這是難以接受的。
unicode在很長一段時間內無法推廣,直到互聯網的出現,為解決unicode如何在網路上傳輸的問題,於是面向傳輸的眾多 UTF(UCS Transfer Format)標准出現了,顧名思義,UTF-8就是每次8個位傳輸數據,而UTF-16就是每次16個位。
UTF-8就是在互聯網上使用最廣的一種unicode的實現方式,這是為傳輸而設計的編碼,並使編碼無國界,這樣就可以顯示全世界上所有文化的字元了。
UTF-8最大的一個特點,就是它是一種變長的編碼方式。
它可以使用1~4個位元組表示一個符號,根據不同的符號而變化位元組長度,當字元在ASCII碼的范圍時,就用一個位元組表示,保留了ASCII字元一個位元組的編碼做為它的一部分,注意的是unicode一個中文字元佔2個位元組,而UTF-8一個中文字元佔3個位元組)。
從unicode到uft-8並不是直接的對應,而是要過一些演算法和規則來轉換。
最後簡單總結一下:
中國人民通過對 ASCII 編碼的中文擴充改造,產生了 GB2312 編碼,可以表示6000多個常用漢字。
漢字實在是太多了,包括繁體和各種字元,於是產生了 GBK 編碼,它包括了 GB2312 中的編碼,同時擴充了很多。
中國是個多民族國家,各個民族幾乎都有自己獨立的語言系統,為了表示那些字元,繼續把 GBK 編碼擴充為 GB18030 編碼。
每個國家都像中國一樣,把自己的語言編碼,於是出現了各種各樣的編碼,如果你不安裝相應的編碼,就無法解釋相應編碼想表達的內容。
終於,有個叫 ISO 的組織看不下去了。他們一起創造了一種編碼 UNICODE ,這種編碼非常大,大到可以容納世界上任何一個文字和標志。所以只要電腦上有 UNICODE 這種編碼系統,無論是全球哪種文字,只需要保存文件的時候,保存成 UNICODE 編碼就可以被其他電腦正常解釋。
UNICODE 在網路傳輸中,出現了兩個標准 UTF-8 和 UTF-16,分別每次傳輸 8個位和 16個位。
於是就會有人產生疑問,UTF-8 既然能保存那麼多文字、符號,為什麼國內還有這么多使用 GBK 等編碼的人?
因為 UTF-8 等編碼體積比較大,占電腦空間比較多,如果面向的使用人群絕大部分都是中國人,用 GBK 等編碼也可以。
如果你滿意點個贊謝謝!!
E. java中獲取含中文的字元串長度
publicclassSplitTest{
publicstaticvoidmain(String[]args){
Strings="abc,大家好abc才是真的好abc";
s=s.replaceAll("[^(\u4e00-\u9fa5)]","");
System.out.println(s+" 長度="+s.length());
}
}
F. 簡單的JAVA字元串長度計算的實現
簡單實現代碼如下:
public
class
stringlength
{
/**
*
獲取字元串的長度,如果有中文,則每個中文字元計為2位
*
@param
value
指定的字元串
*
@return
字元串的長度
*/
public
static
int
length(string
value)
{
int
valuelength
=
0;
string
chinese
=
"[\u0391-\uffe5]";
/*
獲取欄位值的長度,如果含中文字元,則每個中文字元長度為2,否則為1
*/
for
(int
i
=
0;
i
<
value.length();
i++)
{
/*
獲取一個字元
*/
string
temp
=
value.substring(i,
i
+
1);
/*
判斷是否為中文字元
*/
if
(temp.matches(chinese))
{
/*
中文字元長度為2
*/
valuelength
+=
2;
}
else
{
/*
其他字元長度為1
*/
valuelength
+=
1;
}
}
return
valuelength;
}
public
static
void
main(string
args[]){
string
str
=
"hello你好";
system.out.println(stringlength.length(str));
}
}
G. java中一個字元是幾個位元組字元和位元組是同等的嗎
Java規定了字元的內碼要用UTF-16編碼,一個字元是2個位元組。外碼字元所佔位元組取決於具體編碼。字元和位元組是不一樣的。
外碼編碼不同,字元和位元組的換算不同,幾種常見的編碼換算如下:
ASCII編碼是單位元組編碼,只有英文字元,不能編碼漢字。
GBK編碼1個英文字元是1個位元組,一個漢字是是2個位元組。
UTF-8編碼1個英文字元是1個位元組,一個漢字是3個位元組。
Unicode編碼1個英文字元是2個位元組,一個漢字是2個位元組。
(7)java中文字元長度擴展閱讀:
漢字編碼的困難點 漢字進入計算機,有許多困難,其原因主要有三點:
①數量龐大:一般認為,漢字總數已超過6萬個(包括簡化字)。雖有研究者主張規定3000多或4000字作為當代通用漢字,但仍比處理由二三十個字母組成的拼音文字要困難得多。
②字形復雜:有古體今體,繁體簡體,正體異體;而且筆畫相差懸殊,少的一筆,多的達36筆,簡化後平均為9.8筆。
③存在大量一音多字和一字多音的現象:漢語音節416個,分聲調後為1295個(根據《現代漢語詞典》統計,輕聲39個未計)。以1萬個漢字計算,每個不帶調的音節平均超過24個漢字,每個帶調音節平均超過7.7個漢字。有的同音同調字多達66個。一字多音現象也很普遍。
H. Java中文字元所佔的位元組數是多少
採用GB2312或GBK編碼方式時,一個中文字元佔2個位元組;而採用UTF-8編碼方式時,一個中文字元會佔3個位元組。
I. java字元串最大長度
1.String內部是以char數組的形式存儲,數組的長度是int類型,那麼String允許的最大長度就是Integer.MAX_VALUE了,2147483647;
又由於java中的字元是以16位存儲的,因此大概需要4GB的內存才能存儲最大長度的字元串。所以,發送xml批量的需要在oracle資料庫中用clob類型,而在java 端可以用String;
2. ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next())
{
java.sql.Clob clob = rs.getClob("CLOBATTR");
inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()];
inStream.read(c);
//data是讀出並需要返回的數據,類型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
J. java 怎樣判斷字元串的長度
/**
*得到一個字元串的長度,顯示的長度,一個漢字或日韓文長度為1,英文字元長度為0.5
*@paramStrings需要得到長度的字元串
*@returnint得到的字元串長度
*/
publicstaticdoublegetLength(Strings){
doublevalueLength=0;
Stringchinese="[u4e00-u9fa5]";
//獲取欄位值的長度,如果含中文字元,則每個中文字元長度為2,否則為1
for(inti=0;i<s.length();i++){
//獲取一個字元
Stringtemp=s.substring(i,i+1);
//判斷是否為中文字元
if(temp.matches(chinese)){
//中文字元長度為1
valueLength+=1;
}else{
//其他字元長度為0.5
valueLength+=0.5;
}
}
//進位取整
returnMath.ceil(valueLength);
}