Tout d'abord, char est le type de base de Java. Le nombre d'octets occupés par le type de base est fixe. Par exemple, int occupe 4 octets et double occupe 8 octets. peut faire Java Les types occupés sur les différentes plateformes sont fixes, ce qui garantit la portabilité de Java. Par conséquent, le type char en Java occupe fixement 2 octets. (Remarque : le type char peut également stocker un caractère chinois).
Deuxièmement, String est stocké de manière plus flexible. Dans String, un caractère anglais occupe 1 octet, tandis que les caractères chinois occupent un nombre d'octets différent selon l'encodage. Avec le codage UTF-8, un caractère chinois occupe 3 octets ; avec le codage GBK, un caractère chinois occupe 2 octets.
Le code du test est le suivant :
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); } }
Résultat de sortie :
utf-8编码下’hello’所占的字节数: 5 gbk编码下’hello’所占的字节数: 5 utf-8编码下’你好abc’所占的字节数: 9 gbk编码下你好’你好abc’所占的字节数: 7
On peut voir que pour String, un caractère anglais occupe 1 octet de caractères chinois. occupent 2 (codage GBK) ou 3 (codage UTF-8) octets. Vous pouvez également utiliser cette méthode pour vérifier l’état d’autres encodages, qui ne seront pas décrits ici.
Enfin, en fonction des caractéristiques de String, vous pouvez déterminer si une chaîne contient des caractères chinois :
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 + "' 中无汉字"); } } }
Résultat de sortie :
‘Good morning’ 中无汉字 ‘hello 早上好’ 中的汉字为:早上好
Tutoriel recommandé : Tutoriel d'introduction à Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!