java 字符 几个字节_java中字符串占几个字节「建议收藏」

java 字符 几个字节_java中字符串占几个字节「建议收藏」首先 char 为 Java 的基本类型 基本类型所占的字节数是固定的 如 int 占 4 字节 double 占 8 字节 这可以使得 Java 在不同的平台上所占类型固定 很好地保证了 Java 的可移植性 因此 Java 中 char 类型固定占 2 个字节 注 char 类型也可以存储一个汉字 其次 String 采用一种更灵活的方式进行存储 在 String 中 一个英文字符占 1 个字节

首先,char为Java的基本类型,基本类型所占的字节数是固定的,如int占4字节,double占8字节,这可以使得Java在不同的平台上所占类型固定,很好地保证了Java的可移植性。因此,Java中char类型固定占2个字节。(注:char类型也可以存储一个汉字)。

其次,String采用一种更灵活的方式进行存储。在String中,一个英文字符占1个字节,而中文字符根据编码的不同所占字节数也不同。在UTF-8编码下,一个中文字符占3个字节;而使用GBK编码时一个中文字符占2个字节。

测试代码如下: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);

}

}

输出结果:utf-8编码下’hello’所占的字节数: 5

gbk编码下’hello’所占的字节数: 5

utf-8编码下’你好abc’所占的字节数: 9

gbk编码下你好’你好abc’所占的字节数: 7

由此可见,对也String来说,一个英文字符固定占1个字节,而中文字符占2个(GBK编码)或3个(UTF-8编码)字节。也可使用此方法查看其它编码的情况,此处不再一一赘述。

最后,基于String的这种特性,可以判断一个字符串中是否包含中文,举例如下: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 + “‘ 中无汉字”);

}

}

}

输出结果:‘Good morning’ 中无汉字

‘hello 早上好’ 中的汉字为:早上好

推荐教程:java入门教程

编程小号
上一篇 2025-03-16 18:57
下一篇 2025-03-17 22:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/128961.html