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

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

大家好,又见面了,我是你们的朋友全栈君。

dc1e68869f05e0d5f97e1254b34ca3b0.png

首先,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入门教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年6月26日 下午4:00
下一篇 2022年6月26日 下午4:16


相关推荐

  • Microsoft.Practices.EnterpriseLibrary连接Oracle

    Microsoft.Practices.EnterpriseLibrary连接OracleMicrosoftEnterpriseLibrary用起来也是挺不错的,对于习惯自己写sql语句的开发者们,这个应该挺好的。下面以连接Oracle为例简单介绍下如何连接数据库。首先下载MicrosoftEnterpriseLibrary5.0:http://www.microsoft.com/en-us/download/details.aspx?id=15104,这是一个安装包

    2022年10月20日
    8
  • vue中的虚拟DOM原理

    vue中的虚拟DOM原理1 定义 虚拟 DOM 其实就是一棵以 JavaScript 对象 VNode 节点 作为基础的树 用对象属性来描述节点 实际上它只是一层对真实 DOM 的抽象 最终可以通过一系列操作使这棵树映射到真实环境上 相当于在 js 与 DOM 之间做了一个缓存 利用 patch diff 算法 对比新旧虚拟 DOM 记录到一个对象中按需更新 最后创建真实的 DOM2 虚拟 dom 原理流程模板 gt 渲染函数 gt 虚拟 DOM 树 gt 真实 DOMvuejs 通过编译将模板 template 转成渲

    2025年6月19日
    4
  • noip2014普及组复赛题解_noip2019普及组复赛试题

    noip2014普及组复赛题解_noip2019普及组复赛试题NOIP2012普及组解题报告            byRtPYH——————————————————————————————————————前言:作者是一个蒟蒻,如果对本文有建议,欢迎提出!鄙人将虚心接受。

    2022年8月22日
    10
  • thinkphp 本地配置手机移动端,在pc端访问手机端

    thinkphp 本地配置手机移动端,在pc端访问手机端

    2021年10月16日
    34
  • python 生成exe文件

    python 生成exe文件在windows下,可以使用pyinstaller打包python程序为exe可执行程序。1、安装pyinstaller在cmd命令行窗口运行以下命令安装pyinstallerpipinstallpyinstaller2、打包python程序在python程序所在目录,执行以下命令#切换到指定目录cd/dpath#正常打包命令pyinstaller-F-w-iico_pathxxx.py-F是将所有文件打成一个exe文件,一般是必写的(注意必须

    2022年4月29日
    57
  • 如何为电脑添加组策略

    如何为电脑添加组策略本地组策略编辑器是一个 Microsoft 管理控制台 MMC 管理单元 它提供一个单一用户界面 通过该界面可管理本地组策略对象 GPOs 通常打开方式都是按 Win R 组合键 打开运行 并输入 gpedit msc 命令 确定或回车打开本地组策略编辑器 可有些用户在输入 gpedit msc 命令后 却提示 Windows 找不到文件 gpedit msc 请确定文件名是否正确后 再试一次 解决方法 1 在桌面空白处新建一个文本文档 2 在文档中输入以下代码 echooffpu

    2026年3月17日
    2

发表回复

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

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