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

java 字符 几个字节_java中字符串占几个字节相关推荐

  1. JAVA中char占用多少字节_Java中char占用几个字节

    https://www.cnblogs.com/louiswong/p/6062417.html https://www.cnblogs.com/fnlingnzb-learner/p/7272348 ...

  2. char几个字节java_java中char占几个字节?

    java中char占几个字节? java中的一个char占用2个字节.java采用unicode,2个字节来表示一个字符. 一个数字或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个 ...

  3. python中int占几个字节_Python中int占几个字节

    Python中int占几个字节 以python3版本为例说明, int 类型在python中是动态长度的.因为python3中int类型是长整型,理论支持无限大的数字,但它的结构其实也很简单, 在 l ...

  4. java 判断字符 不等于 或者_java中字符串不等于怎么判断

    java中字符串不等于可以使用equals()方法判断,equals()方法用于将字符串与指定的对象比较. 语法public boolean equals(Object anObject) 参数 an ...

  5. java字符编码详解_Java中字符编码格式详解

    一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符, ...

  6. java中char是几个字节_Java中char占用几个字节

    在讨论这个问题之前,我们需要先区分unicode和UTF. unicode :统一的字符编号,仅仅提供字符与编号间映射.符号数量在不断增加,已超百万.详细:[https://zh.wikipedia. ...

  7. java一个中文几个字节_java一个汉字占几个字节;一个字符占几个字节?redis一个汉字占几个字节;一个字符占几个字节?...

    脱离字符集编码 谈这个问题没什么实际意义 我不知道你讲的Java 中汉字是几个字节具体是什么意思 Java 中 Character 采用的是 utf-16 编码,那么就是两个字节(0----65535 ...

  8. java string 后几位_java中String占几个位元组

    java中String占几个位元组以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java中String占几个位元组 J ...

  9. java字符串字节_Java中字符串与byte数组之间的相互转换

    前言 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的.下面跟我一起来了解一下字符串与byte之间转换的原理 ...

最新文章

  1. php 整形 字符串排序,php-通过特定的字符串值进行排序
  2. redis的基础命令操作
  3. python 实现原型设计模式
  4. nginx支持php解析,upstream模块
  5. c++中大矩阵乘法计算的效率问题
  6. Linux操作系统原理与应用08:文件系统
  7. RHEL 7.6 安装 Oracle 18c RAC
  8. JavaScript验证表单数据,HTML自动验证表单数据是否为空,数字范围
  9. 各自然带代表植被_景观学习 | 消落带的景观设计
  10. 视觉媒体通信作业记录(四)视频网络传输
  11. java生成条形码_Java使用jbarcode生成条形码
  12. 树莓派触摸屏校准以及QT触摸屏相关问题解决
  13. 洛谷 【入门1】顺序结构 P5708 【深基2.习2】三角形面积
  14. 基于STC12C5A60S2的SDHC卡的初始化和读写过程
  15. Rhythmbox中mp3中文乱码解决
  16. 每日一书丨这本书献给所有铸就开源世界的人们
  17. php eval函数的用法,php eval函数用法详解
  18. 完美解决IDEA 中Maven插件报红详细攻略(含阿里云镜像下载失败),差点泪崩...冲冲冲
  19. 【Unity3D插件】AVPro Video插件分享《视频播放插件》
  20. M1版本Photoshop2021原生ARM完整安装方法下载(适配M1芯片全系Mac教程)

热门文章

  1. 【英语学习】【Level 07】U02 Live Work L2 A place to call my home
  2. Intel® Nehalem/Westmere架构/微架构/流水线 (2) - 流水线概述
  3. Android 3D系列之基本概念篇
  4. linux的进程/线程/协程系列1:进程到协程的演化
  5. linux32位运行64位程序,32位windows下可以运行的程序在64位linux下报错
  6. UE4 Blueprint编译过程
  7. 弹飞大爷 BZOJ4764 LCT维护内向基环树森林
  8. 搭建svn,创建svn项目
  9. [转]设定version 更新js缓存
  10. bluetooth记录