java中char到底占几个字节的问题

java中char到底占几个字节的问题前些天被问到一个问题 java 中一个 char 可以表示一个汉字吗 我一想 char 不是占一个字节吗 汉字在 utf 8 中占三个字节 还有四字节的 char 不能够表示 对方一笑 让我后面查查所以网上搜了一些资料查查 并做一个例子 publicclassB publicstatic getBytesUTF8 charc

public class BytesOfChar { public static byte[] getBytesUTF8 (char c ) { Charset cs = Charset.forName("utf-8"); CharBuffer cb = CharBuffer.allocate (1); cb.put (c); cb.flip (); ByteBuffer bb = cs.encode (cb); return bb.array(); } public static byte[] getBytesGBK (char c) { Charset cs = Charset.forName("GBK"); CharBuffer cb = CharBuffer.allocate (1); cb.put(c); cb.flip (); ByteBuffer bb = cs.encode (cb); return bb.array(); } public static void main(String[] args) throws UnsupportedEncodingException { char c='a'; char cc='中'; String str="a"; String strr="中"; String s="a"; System.out.println("编码为UTF8:"); System.out.println("char值为英文字符所占字节长度:"+getBytesUTF8(c).length); System.out.println("char值为中文字符所占字节长度:"+getBytesUTF8(cc).length); System.out.println("编码为GBK(默认编码):"); System.out.println("char值为英文字符所占字节长度:"+getBytesGBK(c).length); System.out.println("char值为中文字符所占字节长度:"+getBytesGBK(cc).length); System.out.println("-------------------------------"); System.out.println("编码为UTF8"); System.out.println("String为英文字母所占字节长度:"+str.getBytes("utf-8").length); System.out.println("String为中文字母所占字节长度:"+strr.getBytes("utf-8").length); System.out.println("编码为GBK:"); System.out.println("String为英文字母所占字节长度:"+str.getBytes("GBK").length); System.out.println("String为中文字母所占字节长度:"+strr.getBytes("GBK").length); System.out.println("String为英文字母(全角)所占字节长度:"+s.getBytes("GBK").length); } } 运行结果: 编码为UTF8: char值为英文字符所占字节长度:1 char值为中文字符所占字节长度:3 编码为GBK(默认编码): char值为英文字符所占字节长度:2 char值为中文字符所占字节长度:2 ------------------------------- 编码为UTF8 String为英文字母所占字节长度:1 String为中文字母所占字节长度:3 编码为GBK: String为英文字母所占字节长度:1 String为中文字母所占字节长度:2 String为英文字母(全角)所占字节长度:2
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223826.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:21
下一篇 2026年3月17日 下午1:21


相关推荐

  • Ptrace 详解 转载

    Ptrace 详解 转载转载 Ptrace 详解引子 1 在 Linux 系统中 进程状态除了我们所熟知的 TASK RUNNING TASK INTERRUPTIBL TASK STOPPED 等 还有一个 TASK TRACED 这表明这个进程处于什么状态 2 strace 可以方便的帮助我们记录进程所执行的系统调用 它是如何跟踪到进程执行的 3 gdb 是我们调试程序的利器 可以设置断点 单步跟踪程序 它的实现原理又是什么 所有这一切的背后都隐藏着 Linux 所提供的一个强大的系统调用 ptrace 1 ptrace 系统调用 ptra

    2026年3月17日
    2
  • 腾讯推出OpenClaw安全工具箱:为全民“养虾”筑牢安全防线

    腾讯推出OpenClaw安全工具箱:为全民“养虾”筑牢安全防线

    2026年3月13日
    2
  • RS-232详解

    RS-232详解RS 232 是美国电子工业联盟制定的串行数据通信接口标准 原始编号全称是 EIA RS 232 简称 RS232 它被广泛用于 DCE DataCommunic 和 DTE DataTerminal 之间的连接 DCE 可以理解为数据通信端 比如 modem 设备 DTE 可以理解为数据终端 比如电脑 最早的台式电脑都会保留 9 针的 232 接口 用于串口

    2026年3月16日
    3
  • linux redis安装步骤_redis安装部署centos

    linux redis安装步骤_redis安装部署centos背景Redis版本6.0.1服务器版本LinuxCentOS7.664位一、下载进入官网找到下载地址https://redis.io/download鼠标右击选择复制链接地址进入到Xshell控制台,进入usr/,输入wget,命令如下:[root@bdausr]#cdusr/[root@bdausr]#wgethttps://download.redis.io/releases/redis-6.0.10.tar.gz二、解压[root@bdausr]

    2022年10月4日
    3
  • JAVA_JDK下载与安装教程(小白)

    JAVA_JDK下载与安装教程(小白)链接:https://pan.baidu.com/s/1DrlG62wqos_zEkqrIU54fA提取码:ylgd

    2022年5月28日
    38
  • VSCode安装教程(超详细)[通俗易懂]

    VSCode安装教程(超详细)[通俗易懂]VSCode安装教程(超详细)下载安装一、同意协议(废话了我)二、选择合适的安装位置,下一步三、下一步四、这里注意下,进行相关的选择五、点击安装六、等待安装完成,很快配置中文界面上面安装完成后会出现下面的界面,我们搜索Chinese,点击install然后Restart重启后就ok了,中文界面下载下载地址:DownloadVisualStudioCode选择相应的版本下载。安装跟着图一步步走,简单明了。一、同意协议(废话了我)二、选择合适的安装位置,下一步三、下一步四

    2022年8月22日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号