Heim >Java >JavaErste Schritte >Wie viele Bytes belegt ein String in Java?
Zuallererst ist char der Basistyp von Java. Die Anzahl der vom Basistyp belegten Bytes ist beispielsweise festgelegt kann machen Java Die auf verschiedenen Plattformen belegten Typen sind festgelegt, was die Portabilität von Java gewährleistet. Daher belegt der char-Typ in Java fest 2 Bytes. (Hinweis: Der Typ char kann auch ein chinesisches Zeichen speichern).
Zweitens wird String flexibler gespeichert. In String belegt ein englisches Zeichen 1 Byte, während chinesische Zeichen je nach Codierung unterschiedlich viele Bytes belegen. Bei der UTF-8-Kodierung belegt ein chinesisches Zeichen 3 Bytes; bei Verwendung der GBK-Kodierung belegt ein chinesisches Zeichen 2 Bytes.
Der Testcode lautet wie folgt:
import java.io.UnsupportedEncodingException; public class StrTest { public static void main(String[] args) throws UnsupportedEncodingException { String str1 = "hello"; String str2 = "你好abc"; System.out.println("utf-8编码下'hello'所占的字节数:" + str1.getBytes("utf-8").length); System.out.println("gbk编码下'hello'所占的字节数:" + str1.getBytes("gbk").length); System.out.println("utf-8编码下'你好abc'所占的字节数:" + str2.getBytes("utf-8").length); System.out.println("gbk编码下你好'你好abc'所占的字节数:" + str2.getBytes("gbk").length); } }
Ausgabeergebnis:
utf-8编码下’hello’所占的字节数: 5 gbk编码下’hello’所占的字节数: 5 utf-8编码下’你好abc’所占的字节数: 9 gbk编码下你好’你好abc’所占的字节数: 7
Es ist ersichtlich, dass für String ein englisches Zeichen 1 Byte belegt belegen 2 (GBK-Kodierung) oder 3 (UTF-8-Kodierung) Bytes. Sie können diese Methode auch verwenden, um den Status anderer Kodierungen zu überprüfen, die hier nicht beschrieben werden.
Schließlich können Sie anhand der Eigenschaften von String feststellen, ob ein String chinesische Zeichen enthält. Beispiel:
public class StrTest { public static void main(String[] args) throws UnsupportedEncodingException { searchChineseCharacter("Good morning"); searchChineseCharacter("hello 早上好"); } //找出一个字符串中的汉字 public static void searchChineseCharacter(String str){ //正则表达式,用于匹配中文字符 String regex = "[\u4e00-\u9fa5]"; //如果str的长度和其所占字节数不等,说明包含中文 if (str.length() != str.getBytes().length){ Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); System.out.print("'" + str + "' 中的汉字为:"); while (matcher.find()){ System.out.print(matcher.group()); } } else { System.out.println("'" + str + "' 中无汉字"); } } }
Ausgabeergebnis:
‘Good morning’ 中无汉字 ‘hello 早上好’ 中的汉字为:早上好
Empfohlenes Tutorial: Java-Einführungs-Tutorial
Das obige ist der detaillierte Inhalt vonWie viele Bytes belegt ein String in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!