首页 > 编程语言 >[Java] String.length()

[Java] String.length()

时间:2022-11-22 16:49:16浏览次数:60  
标签:字符 UTF String length Java 单元 字节

一个字符的String.length()是多少?

Java中,对于String.length(str),要看str的unicode对应的单元数。

原理

Java中 有内码和外码这一区分简单来说

内码:char或String在内存里使用的编码方式。
外码:除了内码都可以认为是“外码”。(包括class文件的编码)
java内码:unicode(utf-16)中使用的是utf-16
所以String.length():返回字符串的长度,这一长度等于字符串中的UTF-16的代码单元的数目。
UTF-16编码一个字符对于U+0000-U+FFFF范围内的字符采用2字节进行编码
而对于字符的码点大于U+FFFF的字符采用四字节进行编码,
前者是两字节也就是一个代码单元,后者一个字符是四字节也就是两个代码单元!
对于U+1D11E,它的代理单元是U+D834和U+DD1E
要统计字符数,可以使用codePointCount()
UTF-32 以 32 位一个单元,它只包含这一种单元就够了,它的一单元自然也就是四字节了。
UTF-8 的 8 指的就是最小为 8 位一个单元,也即一字节为一个单元
UTF-8 可以包含一个单元,二个单元,三个单元及四个单元,对应即是一,二,三及四字节。

Reference
https://juejin.cn/post/6844904036873814023

标签:字符,UTF,String,length,Java,单元,字节
From: https://www.cnblogs.com/NetUSA/p/16915562.html

相关文章

  • Java工具库Guava的区间(范围Range)的构建、区间运算、查询运算、关系运算(包含、相连
    场景Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127683387Java工具库Gua......
  • Java实现网络爬虫 案例代码
    Java实现网络爬虫案例代码需求说明搭建开发环境,实现《三国演义》全文保存在本地 步骤分析访问网址:http://www.shicimingju.com/book/sanguoyanyi.html分析网站URL......
  • [Java] 判断是否为空
    在使用Java的过程中,经常遇到需要判断一个对象,字段或者值为空的情况判断对象是否为空Objects.isNull()Objects.nonNull()obj==nullobj!=null判断集合是否为空C......
  • Java 网络编程(五)TCP
    客户端1.连接服务器socket2.发送消息//客户端publicclassTcpClientDemo01{publicstaticvoidmain(String[]args){Socketsocket=null......
  • Java FreeMarker模板引擎注入深入分析
    0x01前言最近和 F1or 大师傅一起挖洞的时候发现一处某CMSSSTI的0day,之前自己在复现jpress的一些漏洞的时候也发现了SSTI这个洞杀伤力之大。今天来好好系统学习......
  • 小新学Java10
    栈:先进后出队列:先进先出数组:查询快,增删慢 链表:查询慢、增删快 红黑树: 1、HashSet集合存储数据的结构(哈希表)  2、Set集合存储元素不重复的原理  3、E......
  • Java基础面试题
     ArrayList和LinkedList有什么区别?可以从它们的底层数据结构、效率、开销进行阐述哈ArrayList是数组的数据结构,LinkedList是链表的数据结构。随机访问的时候,Array......
  • Java 网络编程(四)通信协议
    协议:约定,就好比我们现在说的是普通话网络通信协议:速率,传输码率,代码结构,传输控制......TCP/IP协议簇实际上是一组协议重要:1.TCP:用户传输协议2.UDP:用户数......
  • 【Core Java Volume1】重写equals,hashCode,toString方法
    1重写equals()方法:例:重写父类Employee3的equals方法//重写equals//1显示命名参数otherObject,稍后转化为otherpublicbooleanequals(ObjectotherObject){//2检......
  • 【Mybatis】java.lang.IllegalArgumentException: Mapped Statements collection does
    【java.lang.IllegalArgumentException:MappedStatementscollectiondoesnotcontainvalueforcom.myba】错误一般是有以下四个原因造成:1、mapper.xml中没有加入names......