Java中字符串长度方法length()和codePointCount()区别

ECC椭圆曲线加解密原理详解(配图) 椭圆曲线加解密原理详解 本文主要参照:ECC椭圆曲线详解(有具体实例)[1] 前言: 椭圆曲线(ECC)加密原理跟RSA加解密原理比起来,可真是晦涩难懂。拜读了大神Kalafinaian文章“ECC椭圆曲线详解(有具体实例)”,终于看到了参透的曙光。 由于原文中有微小的瑕疵,也为了便于阅读起来更加流畅,我重新整理了一下这篇文章。 为什么使用椭圆曲线加密算法? RSA的解决分解整数问题需要亚指数... 阅读详情

在String类和继承抽象类AbstractStringBuilder的StringBuilder和StringBuffer类中,length()和codePointCount()方法都是计算字符串长度。

测试运行的长度值是相等的,那为什么要设定两个方法呢?

经过研究发现:对于普通字符串,这两种方法得到的值是一样的,但对于UniCode编码来说,还是有一点区别。

实际情况是length()方法返回的是使用的是UTF-16编码的字符代码单元数量,不一定是实际上我们认为的字符个数。同理codePointCount()方法返回的是代码点个人数,是实际上的字符个数。

因为常用的uniCode字符使用一个代码单元就可以表示,但有些辅助字符需要一对代码单元表示。length()方法计算的是代码单元的数量,codePointCount()方法计算的是代码点数。

比如整数集合的数学符号”Z”(没办法打出来),它的代码点是U+1D56B,但它的代理单元是U+D835和U+DD6B,如果令字符串str = “/u1D56B”,机器识别的不是”Z”,而是一个代码点”/u1D56“和字符”B“,所以会得到它的代码点数是2,代码单元数也是2。

但如果令字符str = “/uD835/uDD6B”,那么机器会识别它是2个代码单元代理的1个代码点”Z“,故而,length的结果是代码单元数量2,而codePointCount()的结果是代码点数量1.

但平常我们使用时,这两种求字符串长度的方法还是通用的,不用加以区别。不过建议多用codePointCount()方法。

另外代码点与代码单元,见另一篇博客。

【Python_PySide6学习笔记(二十四)】菜单栏QMenuBar类的基本用法 此篇文章中介绍 PySide6 中 QMenuBar 类的基本用法,包括"创建菜单栏"、"创建一级菜单"、"创建二级菜单"等,会持续更新,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。 阅读详情

相关推荐

STDP实战:用PyTorch从零搭建脉冲神经网络(附完整代码)

本文提供了基于PyTorch从零搭建脉冲神经网络的实战教程,重点讲解了STDP学习规则的原理与工程实现。通过构建LIF神经元模型和向量化STDP层,并结合泊松编码,详细演示了如何构建一个能够进行无监督特征学习的混合网络架构,为探索神经形态计算和低功耗实时学习方案提供了完整代码与实践指南。

weixin_29056145的博客 266

java String 的codePointCount方法

java String 的codePointCount方法 今天刚看到记录一下。 在计算字符串长度时,Java的两种方法length()和codePointCount()一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢? 对于普通字符串,这两种方法得到的值是一样的,但对于UniCode的编码来说,还是有一点区别。 常用的uniCode字符使用一个代码单元就可以表示,但有些辅助字符需要一对代码单元表示。 比如整数集合的数学符号"Z"(没办法打出来),它的代码点是U+1D56B,但它的代

Soul_X的宇宙 2763

时空数据建模的跨节点联邦图神经网络:KDD21 Cross-Node Federated Graph Neural Network for Spatio-Temporal Data Modeling

前言 联邦学习(FL)虽然已经被广泛研究,但是对复杂的时空依赖关系进行建模以提高预测能力仍然是一个开放的问题。此外目前最优的时空预测模型假定对数据的访问不受限制,忽略了对数据共享的限制。基于此,本文提了一个基于图联邦学习的时空数据模型 Cross-Node Federated Graph Neural Network (CNFGNN),该模型在跨节点联邦学习的约束下,使用基于图神经网络(GNN)的架构对底层图结构进行编码,属于结构化联邦的一种,每个本地模型利用私有数据进行学习,并保持分散性。CNFGNN

qq_56027260的博客 1810

关于码点、代码单元、length()方法和codePointCount()方法的一些心得

下面是我在阅读《Java核心技术卷Ⅰ》中的两段代码: //String greeting = "Hello"; int n = greeting.length(); //is 5 //String greeting = "Hello"; int cpCount = greeting.codePointCount(0, greeting.length());// is 5 这两段代码的结果都是5,这让我感到非常地困惑:同样的结果,第二段代码的意义在哪? length方法将返回采用UTF-16编码表示给定

fqllll的博客 1948

解密UFS Explorer:Drobo BeyondRAID数据恢复实战指南

本文详细介绍了使用UFS Explorer Professional Recovery软件中的Drobo BeyondRAID助手进行数据恢复的完整实战流程。当Drobo设备因BeyondRAID配置信息丢失而无法访问时,该工具能安全、只读地扫描硬盘,虚拟重建存储池,帮助用户找回宝贵数据。指南涵盖了从前期准备、硬盘选择、配置扫描到数据安全导出的每一步关键操作与常见问题解决方案。

weixin_29219539的博客 270

CloudCompare 二次开发(9)——半径滤波

基于PCL对CloudCompare软件进行二次开发,实现的算法功能是半径滤波

点云侠的博客 1401

java code point_Java String codePointCount() 方法

以前 String 使用两个字节来表示一个字符( char[] )。但是bai随着时代的发展,现在的 Unicode 已经有 17 个代码平面,每个平面有 65536 个字符,加起来就是 1114112 个字符,2个字节已经无法表示这么多字符了,所以 String 目前使用 char[] 存储 utf-16 编码,再将 utf-16 编码转成 Unicode。utf-16 是基于 Unicode ...

weixin_32056343的博客 398

学Simulink——十二脉波整流电路(移相变压器)谐波抵消仿真

Y:Δ = 1:√3(若 DC 同压)— 此处同相电压故 220V(Y)=220V(Δ phase)Y(相电压=220V)、Δ(线电压=380V ⇒ 相=220V,30° 移相)可经 Lbal​=0.5mH(平衡电抗)或直接短(大 L_dc 下均流尚可)✅ 直流输出纹波频率 = 12·f_line(vs 6·f_line)直流输出 → Ldc​=50mH→Cdc​=2200µF→R=30Ω。Line‑Line RMS = 380 V(⇒ 相=220V)Vdc​≈1.35⋅380≈513V(同 6‑脉波)

xiaoheshang_123的博客 59

码点和代码单元及length和codePointCount

一. 前言         最近阅读<Java核心技术 卷1>, 读到字符串章节, 里面有提到两个概念 : 码点和代码单元, 一时有点迷糊. 网上找了些资料, 弄了很久才弄明白. 以下仅限个人理解, 仅供参考, 如有理解错误, 还望指点. 欢迎一起讨论. 介绍之前, 建议可以看看编码方面的知识 : 编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)    

JamesGong的博客 925

Unity3D实现视频和模型融合效果

在Unity中,视频和3D模型融合通常涉及到将视频表面内嵌到3D场景中。视频不影响模型的展示, 这可以通过使用Shader和Texture来实现。大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。下面就让我们进入正文吧!提示:以下是本篇文章正文内容,下面案例可供参考本次介绍的就是视频和模型融合的实现,以后有其他的需要添加的会继续添加不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒。

心疼你的一切博客 5357

用playwright封装一个处理web网页的爬虫,并隐藏自动化特征,自动处理反爬

本文介绍了一个使用Playwright封装的Python爬虫函数,具备反爬对抗能力。该脚本通过移除自动化标志、注入真实用户代理、禁用Chrome自动化属性等措施,有效绕过电商、新闻等中等反爬网站的检测。核心功能包括:隐藏navigator.webdriver标志、模拟人类浏览行为、设置合理的设备参数,并支持代理和延迟加载。使用时需注意避免高频访问并定期更新User-Agent。该方案适用于需要JavaScript渲染的动态网页,性能优于非无头模式。

数据知道的博客 3393

length(),和codePointCount代码点,和代码单元的区别

文章目录一,代码点1.1 什么是代码点二,代码单元2.1 什么是代码单元,代码单元是针对编码而来的,如三 ,代码点和代码单元的联系和区别四 ,length()和codePointCount()的区别 一,代码点 1.1 什么是代码点 解释:代码点是一个字符,所代表的编码的点数,这个点数通常用16进制表示 是针对编码Unicode 来说的,就是所有的字符都有唯一的一组16进制数字表示, 一组可能是 一个或者多个16进制数字 二,代码单元 2.1 什么是代码单元,代码单元是针对编码而来的,如 UTF-8 一个字

weixin_43590500的博客 561

Agentic-Desktop-Pet:构建本地智能桌面助手的架构与实践

智能体(Agent)作为人工智能领域的重要概念,是指能够感知环境、自主决策并执行任务以实现目标的软件实体。其核心原理在于结合感知、决策与执行模块,通过大语言模型(LLM)等推理引擎处理信息并驱动行动。这种架构的技术价值在于将AI的认知能力与具体的操作系统环境深度融合,从而创造出能主动理解用户上下文、提供个性化服务的智能伙伴。在应用场景上,智能体技术正从云端对话机器人向本地化、场景化的桌面助手演进,旨在解决传统自动化工具缺乏智能、而纯聊天机器人脱离操作环境的问题。本文探讨的Agentic-Desktop-Pe

weixin_27210125的博客 623

Java中求字符串长度length()和codePointCount()的区别

在计算字符串长度时,Java的两种方法 一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢? 对于普通字符串,这两种方法得到的值是一样的,但对于UniCode的编码来说,还是有一点区别。 常用的uniCode字符使用一个代码单元就可以表示,但有些辅助字符需要一对代码单元表示。 比如整数集合的数学符号"Z"(没办法打出来),它的代码点是U+1D56B,但它的代理单元是U

u012425381的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java的String类中codePointCount方法

我也是今天看到这个方法,查看了很多文章,但是觉得个人理解起来有点困难,在此简单记录下。 我们一般取字符串的长度,都会使用length方法。在String类中,维护了一个char数组来保存字符串,length方法也就是返回了char数组长度。举个例子,假设一个字符串为 String str = “????”;,我们要求它的长度,使用length的话会返回2,但是可能我们想要的结果是1,一个????在char数...

qq_42385454的博客 1574

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java中的length:数组属性、String方法与集合size的底层原理

在Java编程中,获取长度是基础且高频的操作,但数组的length属性、String的length()方法与集合的size()方法却有着截然不同的设计。这背后涉及Java语言规范、JVM字节码指令以及面向对象封装思想。理解这些差异不仅有助于通过面试,还能避免处理字符串和集合时踩坑。本文从字节码层面揭示了数组为何使用arraylength指令,String为何用方法封装,以及集合为何统一用size()。同时深入探讨了String.length()在UTF-16编码下的隐藏陷阱,如emoji字符计数、码点计算等

weixin_31421613的博客 253

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java 字符编码深入理解

  相关概念: 1.Java中的字符串String由字符(char)序列表示,他实现了“字符序列”接口CharSequence。 在Java中,char类型由UTF-16描述一个代码单元。 (引用Core Java第八版:In Java, the char type describes a code unit in the UTF-16 encoding.) 这里所说的Java中,说的是...

hongjn的专栏 156

unicode Java中求字符串长度length()和codePointCount()的区别

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34260991的博客 855

Java String.length( ) 和 String.codePointCount( )区别 String.charAt( )和String.codePointAt( )区别

java String类提供以下两个方法获取字符串长度: int length( ) int codePointCount(int beginIndex, int endIndex) 提供以下两个方法索引字符串中单个字符: char charAt(int index) int codePointCount(int index) 理解这些方法之间的区别,首先需要学习一下unicode和UTF...

AlanNote的博客 2931

java中为什么单个字符的字符串长度为2?

字符串length()方法并不真正返回你所想的长度,一个字符length返回可能为2

w55935的博客 1385

转载 代码单元与码点的区别

java字符串由char值序列组成,char的数据类型是一个采用Unicode码点的代码单元。  即:char数据类型是一个代码单元  任意Unicode字符都是一个码点,大多数常用的Unicode码点由一个char代码单元组成,辅助字符码点由两个char代码单元组成。  代码单元的数量和码点的数量  1、代码单元数量(str.length()不是实际的字符串长度:辅助字符算两个): Stri...

Jiang_C_Y的博客 675

美团面试官问我一个字符的String.length()是多少,我说是1,面试官说你回去好好学一下吧

以上结果输出为7。小萌边说边在IDEA中的win环境下选中String.length()函数,使用进入到String.length()的定义。接着使用对这段英文进行了翻译,得到了大体意思:返回字符串的长度,这一长度等于字符串中的 Unicode 代码单元的数目。小萌:乔戈里,那这又是啥意思呢?)里面对于Java的字符使用的编码有介绍:Java中 有内码和外码这一区分简单来说。

BASK2312的博客 209

Java String如何保存字符串

本文基于 String 源码进行剖析,涉及到字符编码的知识参考自 Unicode Tutorials - Herong’s Tutorial Examples,英文资料讲解的非常详细,建议大家都读一下。 String 真的是 Immutable 的吗 Java 中的 Unicode 字符串会按照 Latin1(所有的字符都小于 0xFF 时)或者 UTF16 的编码格式保存在 String 中,保存为 byte 数组: private final byte[] value; 通常所说的 Immutab.

哈罗德Android笔记 1088

Java 字符串本质

Java字符串本质上是char序列组成.char是一个采用UTF-16编码表示Unicode代码点的代码单元.大多数的常用Unicode字符使用一个代码元就可以表示,而辅助字符需要一对代码元表示.具体编码规范见 http://ilnba.iteye.com/admin/blogs/1612414  length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量.    pub...

iteye_3911的博客 453

Java 码点和代码单元

Java 码点和代码单元 @date:2020.09.01 @author:Jingdai 概念 码点(Code Point):与一个代码表中某个字符相对应的代码值。 Unicode标准中,码点采用十六进制书写,并加上前缀U+,例如U+0041就是拉丁字母A的码点。Unicode的码点可以分为17个代码平面。第一个平面称为基本多语言平面,包括码点从U+0000到U+FFFF的经典Unicode代码;其余16个平面的码点从U+10000到U+10FFFF,包括辅助字符。 代码单元(Code Unit

qq_41512783的博客 554

【Java】用心整理出的字符串总结

目录: 一:字符串的基本概念 1、在Java中,字符串是一段Unicode字符序列 2、Java中没有内置的字符串类型,字符串是String类的一个实例 3、字符串用双引号括住表示 举例: String s1 = ""; String s2 = "Hello World"; 二、子串(substring)的介绍 1、什么是子串? 子串是串中连续的片段,字符串本身是自己的最大字串。 2、substring方法: 先来看一个例子: String s = "Hello World"; String sub =

优快云_MEfresh的博客 324
上一篇: No enclosing instance of type xxx is accessible 问题及解答,静态方法调用动态方法问题
下一篇: JDK1.8安装和配置及注意事项(windows系统)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值