java 字符长度 中文_新手请教Java中关于字符长度的问题?

本文探讨了Java中Unicode编码的使用,指出无论是中文还是英文字符,在Java中每个字符都占据两个字节。在.java源文件中,ASCII字符占一个字节,而UTF-8编码的中文字符可能占3到4个字节。在内存中,Unicode编码确保了字符的一致处理,而在磁盘上的.java文件则依据不同的编码格式有不同的存储方式。
摘要由CSDN通过智能技术生成

1、JAVA中采用 Unicode编码 [ unicode编码一般是 采用UCS-2规范 双字节编码] , java中每个字符占两个字节 (不管是中文字符,还是英文字符 1char = 2 byte )。 ----此处指的是编译过后的 .class文件中存储+jvm加载运行的规则。

在 .java文件中指定的 各种编码格式,无论指定成哪种格式,最后 在编译成.class时 统统经过了unicode 编码 转换成双字节 在 JVM中 运行时 ,虚拟机操作字符就容易的多了!存储占用字节数 如上所述。

--------------------------------分隔符-----------------------------------------------------------

而 .java 源文件 :

每个字节 占 8bit ascii码 表中 0-256 中具体表示的内容 可以 自行补脑。

一个 英文 数字 各种标点 字符 在ASCII 表码中都有对应的值 用一个字节即可表示,高位全部补0 (补0充数)。

--------------------------------分隔符-----------------------------------------------------------

.java文件中 中文字符指定编码格式 UTF-8, 这个编码格式是一个可变长度的 范围1-4个字节。 如果指定中文字符编码为UTF-8则 占3~4个字节 。不要让这个干扰你理解 unicode 编码 ,其实无关[一个在内存中, 一个在磁盘中 orz .....]。

一般 不设置字符编码格式 [默认系统编码格式] 或者 编码格式 为 gbk 一般一个中文占2个字节。

最后 举个栗子:

------------------具体查看 编译文件 .class 文件 中 unicode编码 格式存储的值 ------------

char i ='中'; // char 类型一个 中文 字符 或者 英文字符 , char类型都占 2个字节。

StringBuffer unicode =new StringBuffer("\\u");

unicode.append(Integer.toHexString(i));

System.out.println(unicode.toString()); // "中" ---在java内部 对应的 unicode值为 \u4e2d

\u4e2d 值 可以通过 网上 搜 站长工具 有 unicode 与中文转换 查询 对应中文值 验证 。

\u表示是Unicode字符。 后面是具体的值。

unicode 是双字节 即 一个字符占2个字节 。这是 Unicode的编码规范 不是java决定的...不要纠结了。

-------- 源文件 .java的编码格式 举例如下----------

System.out.println(System.getProperty("file.encoding")); //文件编码格式

System.out.println("中".getBytes("gbk").length); // 长度为2个字节

System.out.println("中".getBytes("utf-8").length);//长度为3个字节

System.out.println("B".getBytes().length);//长度为1个字节

System.out.println("?".getBytes("utf-8").length);//长度为1个字节

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值