Java中char[] 和 String 类型占用字节大小问题

 更新时间:2019年08月14日 10:09:47   作者:威威喵  
这篇文章主要介绍了Java中char[] 和 String 类型占用字节大小问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

作者:威威喵 原文链接:https://blog.csdn.net/smile_Running/article/details/87211916

在 C 语言中

1、char a[10] = {"China"} 中,这个 a 占用多少字节?

答:占用 10 个字节。

解析:上面代码对 a 做了赋值的操作,

a[0]='C' ,a[1]='h' ,a[2]='i' ,a[3]='n' ,a[4]='a' ,a[5]='\0',a[6]='\0',a[7]='\0',a[8]='\0',a[9]='\0'

所以,它占用的是 10 个字节。

2、如果单指 ”China“ ?

答:共 6 个字节。China 占 5 个字节,最后以 '\0' 结束,占 1 个字节。

在 Java 语言中

1、String s = "China"; 占多少字节?

答:占 5 个字节。

System.out.println(Charset.defaultCharset());//获取ide默认编码类型
String s = new String("China".getBytes());
byte[] b = s.getBytes();
System.out.println("" + b.length);

 以上代码,可以输出 "China" 所占的字节长度为 5

2、String s = "中国"; 占多少字节?

答:如果是 汉字 的情况需要考虑编码。

(1)GBK 编码(ide默认)时,每一个汉字占用 2 个字节,那么中国占 4 个字节。

(2)UTF-8 编码时,每一个汉字占用 3 个字节,那么中国占用 6 个字节。

3、转码问题,GBK 转 UTF-8 时,字节占用会变大吗?反过来呢?

//获取的是 UTF-8编码
System.out.println(Charset.defaultCharset());
String s;
try {
  s = new String("中国".getBytes(),"GBK");
  byte[] b = s.getBytes();
  System.out.println("" + b.length);
 } catch (UnsupportedEncodingException e) {
  e.printStackTrace();
}

如上代码是:UTF-8 转 GBK 编码格式,s 长度从 6 字节变为 9 字节。

s 内容变化:中国 —> 涓浗

因为当前编码是 UTF-8,转码之后变成了 3 个文字,占用 9 个字节。然而,反过来的情况是这样的:

中国 (gbk) —> ?й? (utf-8)

s 长度从 4字节 变成了 4字节,虽然长度没发生改变,但是文字已经改变。这里的 ? 占用 1 个字节。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot中过滤器Filter+JWT令牌实现登录验证

    SpringBoot中过滤器Filter+JWT令牌实现登录验证

    本文主要介绍了SpringBoot中过滤器Filter+JWT令牌实现登录验证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • 如何解决Spring事务注解@Transactional在类内部方法调用不生效

    如何解决Spring事务注解@Transactional在类内部方法调用不生效

    这篇文章主要介绍了如何解决Spring事务注解@Transactional在类内部方法调用不生效问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Spring Boot + Mybatis Plus实现树状菜单的方法

    Spring Boot + Mybatis Plus实现树状菜单的方法

    这篇文章主要介绍了Spring Boot + Mybatis Plus实现树状菜单,包括实体类中添加子菜单列表和集合及构建菜单树的详细代码,代码简单易懂,需要的朋友可以参考下
    2021-12-12
  • 解决Spring配置文件中bean的property属性中的name出错问题

    解决Spring配置文件中bean的property属性中的name出错问题

    这篇文章主要介绍了解决Spring配置文件中bean的property属性中的name出错问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java使用zookeeper实现的分布式锁示例

    java使用zookeeper实现的分布式锁示例

    这篇文章主要介绍了java使用zookeeper实现的分布式锁示例,需要的朋友可以参考下
    2014-05-05
  • 详解如何通过Java实现类似Nginx代理

    详解如何通过Java实现类似Nginx代理

    最近遇到一个问题,在内网环境中部署的项目需要调用外网完成一些应用,一般情况我们可以通过增加一台机器,部署到可以访问外网的服务器上,然后内网直接连接该机器通过Nginx进行代理即可,所以本文介绍了如何通过Java实现类似Nginx代理,需要的朋友可以参考下
    2024-08-08
  • SpringBoot 如何实时刷新静态文件

    SpringBoot 如何实时刷新静态文件

    这篇文章主要介绍了SpringBoot如何实时刷新静态文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 使用spring的IOC解决程序耦合的方法

    使用spring的IOC解决程序耦合的方法

    这篇文章主要介绍了使用spring的IOC解决程序耦合的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 一篇文章带你搞定 springsecurity基于数据库的认证(springsecurity整合mybatis)

    一篇文章带你搞定 springsecurity基于数据库的认证(springsecurity整合mybatis)

    这篇文章主要介绍了一篇文章带你搞定 springsecurity基于数据库的认证(springsecurity整合mybatis),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • java前后端加密解密crypto-js的实现

    java前后端加密解密crypto-js的实现

    这篇文章主要介绍了java前后端加密解密crypto-js的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论