java中文string
Ⅰ java中漢字是String類型的么
再java中,只要用雙引號「 」括起來的都是String,部分漢字還是數字或者字母等。
比如
Stringa="中文";
Stringb="abc";
Stringc="124";
這里的a,b,c是變數,對應的都是字元串
Ⅱ java中文亂碼,能說下string.getBytes()和new String()轉碼是,具體點。
1、Java中,【String.getBytes(String decode)】的方法,會根據指定的decode,編碼返回某字元串在該編碼下的byte數組表示,例如:
byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1")
上面三行代碼表示:分別返回「中」這個漢字在GBK、UTF-8和ISO8859-1編碼下的byte數組表示,此時b_gbk的長度為2,b_utf8的長度為3,b_iso88591的長度為1。
2、而通過【new String(byte[], decode)】的方式來還原這個「中」字時,實際是使用decode指定的編碼來將byte[ ]解析成字元串,例如:
String s_gbk = new String(b_gbk,"GBK");
String s_utf8 = new String(b_utf8,"UTF-8");
String s_iso88591 = new String(b_iso88591,"ISO8859-1");
s_gbk和s_utf8都是「中」,而只有s_iso88591是一個不認識 的字元,因為ISO8859-1編碼的編碼表中,根本就沒有包含漢字字元,當然也就無法通過"中".getBytes("ISO8859-1")。
因此,通過【String.getBytes(String decode)】方法來得到byte[ ]時,要確定decode的編碼表中確實存在String表示的碼值,這樣得到的byte[ ]數組才能正確被還原。
(2)java中文string擴展閱讀
java中文編碼避免亂碼
1、為了讓中文字元適應某些特殊要求(如http header頭要求其內容必須為iso8859-1編碼),可能會通過將中文字元按照位元組方式來編碼的情況,比如:
String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")
2、上述例子中的s_iso8859-1字元串實際是三個在 ISO8859-1中的字元,在將這些字元傳遞到目的地後,目的地程序再通過相反的方式:
String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")
來得到正確的中文漢字。這樣就既保證了遵守協 議規定、也支持中文。
3、String.getBytes(String decode)方法會根據指定的decode編碼返回某字元串在該編碼下的byte數組表示這里是encode ,not decode,從字元串到位元組數組是編碼的過程,從位元組數組到字元串(即 new String(byte[] , charsetname))才是解碼的過程。
Ⅲ java中文字元串處理方法
處理方法有分割,合並,等很多方法的
1、String類是final的,不可被繼承。public final class String。
2、String類是的本質是字元數組char[], 並且其值不可改變。private final char value[];
然後打開String類的API文檔,可以發現:
3、String類對象有個特殊的創建的方式,就是直接指定比如String x = "abc","abc"就表示一個字元串對象。而x是"abc"對象的地址,也叫做"abc"對象的引用。
4、String對象可以通過「+」串聯。串聯後會生成新的字元串。也可以通過concat()來串聯,這個後面會講述。
6、Java運行時會維護一個String Pool(String池),JavaDoc翻譯很模糊「字元串緩沖區」。String池用來存放運行時中產生的各種字元串,並且池中的字元串的內容不重復。而一般對象不存在這個緩沖池,並且創建的對象僅僅存在於方法的堆棧區。下面是個系統內存示意圖:
5、創建字元串的方式很多,歸納起來有三類:
其一,使用new關鍵字創建字元串,比如String s1 = new String("abc");
其二,直接指定。比如String s2 = "abc";
其三,使用串聯生成新的字元串。比如String s3 = "ab" + "c";
Ⅳ java中String是什麼
Java字元串,在開發中用的是比較頻繁的一個類,我們平時要表達一句話的含義,就可以使用字元串(String)來詳細的描述;
Java中已經將字元串進行了很好的封裝,我們可以使用String類將字元串進行隨意的操作,比如字元串的反轉,字元串的分割,字元串的拼接等。
Java String類提供了很多的構造方法,他可以根據我們傳入的不同的參數,轉換成我們想要的數據;比如可以將字元數組,位元組數據,ASCII碼數組轉換為字元串,而且可以根據傳入的參數,判斷將數據的哪些位置的內容轉換為字元串;
在java中除了String之外還有幾個常用的字元串類StringBuffer和StringBuilder,在執行效率方面StringBuilder最快,String最慢,在Java源碼中,String類裡面有個常量private final char value[];用來存儲字元串信息,多以對象一旦創建成功之後,內容就不會改變,但實際上修改值得時候,是不斷的創建回收內容,所以String速率最慢;StringBuffer和StringBuilder都是繼承於AbstractStringBuilder這個類,在這個類中有個變數char[] value;數組進行字元串內容的存儲,變數是可變的,所以不用隨時去分配空間,速度相對於String就會快;對於StringBuffer和StringBuffer兩個類,在源碼中由於StringBuffer中很多方法都被synchronized修飾,所以StringBuffer是線程安全的,也是由於這個原因,StringBuffer速度就相對於StringBuilder慢;
在我們操作比較少量的數據的時候可以使用String,如果數據在多個線程中共享,需要考慮到線程安全,可以使用StringBuffer;
以下為java中String常用的方法示例:
更多java學習方面的問題可以訪問這個網頁,網頁鏈接,希望我的回答能幫到你。
Ⅳ java中的字元串代表什麼意思
字元串顧名思義就是一些字元組合在一起組成的一串數據,稱作字元串,在Java中字元串用雙引號包圍起來,格式為String string = 「hello world」; 這里的hello world就是一個字元串,字元串裡面可以包含任何的字元內容;
在Java中String是一個類,所以除了上面直接讓String對象等於一個字元串之外,我們可以向普通的類一樣,使用new創建一個String對象;
當我們使用第一種方法也就是String string = 」hello」;的時候,程序會在特定的內存中(專門保存字元串的內存)查找是否有」hello」這個字元串,如果沒有則在這個內存區域創建一個」hello」字元串,當我們再次創建另一個字元串String string2 = 「hello」;的時候,由於這個時候,這個內存區域已經有了」hello」這個字元串,所以我們string2就直接指向了」hello」這個地址;這個時候我們使用string == string2的時候,得到的結果是true;也就是說兩個指向值是相等的;
當我們使用new 的方式創建一個字元串對象的時候,我們查看String源碼,可以發現String類中是使用private final char value[];的變數來存放字元串的內容;當我們創建兩個字元串String string2 = new String(「hello」); String string3 = new String(「hello」);這個時候,我們使用string2 == string3的時候,得到的結果是false;這是由於new創建的對象會分別在內存中創建兩個地址,所以string2和string3不相等;但是我們使用string2.value == string3.value的時候,得到的結果是true;因為這兩個地址的字元串在內存中是指向的同一個地址的」hello」,並且和我們剛才創建的string所指向的」hello」地址一樣;所以我們一般比較字元串的時候,使用string2.equal(string3);的方式進行比較;
我們可以從下圖中看出來,雖然有四個String對象,但是他們的value值的地址都是一樣的;
Java中String類的構造方法非常的多,我們根據需求,將不同類型的數組轉換成我們想要的字元串;並且String中有我們用的比較多的一些方法,比如public boolean equalsIgnoreCase( String anotherString )表示忽略兩個字元串中字元的大小寫,比較兩個字元串是否相等;public boolean startsWith(String prefix, int toffset)表示從字元串第toffset的位置是否是由prefix開始的;public boolean endsWith(String suffix)判斷字元串是否是以suffix結束的,我們可以從源碼中看到,這個方法使用了startsWith(suffix, value.length - suffix.value.length)的方法;public String substring(int beginIndex)表示截取字元串從beginIndex開始以後的內容;public String substring(int beginIndex, int endIndex)表示截取字元串從beginIndex到endIndex位置的內容;
Java對字元串的封裝非常的強大,除了上述的常用方法之外,還有很多非常方便的方法;能夠熟練掌握String對我們的開發有非常大的幫助;
更多java學習方面的問題可以訪問這個網頁,網頁鏈接,希望我的回答能幫到你。