0%
这是一片思考的空间 -- arthinking
Spring 重构&代码整洁之道 软件设计 JVM 并发编程 数据结构与算法 分布式 存储 网络 微服务 设计模式
Java技术栈 - 涉及Java技术体系

Java笔记 - String类的常用方法

Java提供的API和前面几篇文章中涉及到的技术已经对字符串的支持已经很完善了,多使用API中提供的各种方法,并且在细节上注意效率问题,会让我们对于字符串的处理更加得心应手,下面列举了一些常用的API,更详细的用法和更多的重载方法可以查阅JDK文档。

String

public String()

初始化一个新创建的 String 对象,使其表示一个空字符序列。注意,由于 String 是不可变的,所以无需使用此构造方法。

同时String的构造器提供了各种丰富的重载方法,详细查看API文档

length

public int length()

返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量。

charAt

public char charAt(int index)

返回指定索引处的 char 值。索引范围为从 0length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。如果索引指定的 char 值是代理项,则返回代理项值。

getChars

public void getChars(int srcBegin,
int srcEnd,
char[] dst,
int dstBegin)

将字符从此字符串复制到目标字符数组。要复制的第一个字符位于索引 srcBegin 处;要复制的最后一个字符位于索引 srcEnd-1 处(因此要复制的字符总数是 srcEnd-srcBegin)。要复制到 dst 子数组的字符从索引 dstBegin 处开始,并结束于索引:

 dstbegin + (srcEnd-srcBegin) - 1

getBytes

public byte[] getBytes(String charsetName)
throws UnsupportedEncodingException

使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。当此字符串不能使用给定的字符集编码时,此方法的行为没有指定。如果需要对编码过程进行更多控制,则应该使用 CharsetEncoder 类。

toCharArray

public char[] toCharArray()

将此字符串转换为一个新的字符数组。

equals

public boolean equals(Object anObject)

将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true

equalsIgnoreCase

public boolean equalsIgnoreCase(String anotherString)

将此 String 与另一个 String 比较,不考虑大小写。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。

compareTo

public int compareTo(String anotherString)

按字典顺序比较两个字符串。

该比较基于字符串中各个字符的 Unicode 值。

按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较:

  • 如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。

  • 如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。

  • 如果这两个字符串相等,则结果为 0;

compareTo 只在方法 equals(Object) 返回 true 时才返回 0

contains

public boolean contains(CharSequence s)

当且仅当此字符串包含指定的 char 值序列时,返回 true。

contentEquals

public boolean contentEquals(CharSequence cs)

将此字符串与指定的 CharSequence 比较。当且仅当此 String 与指定序列表示相同的 char 值序列时,结果才为 true

equalsIgnoreCase

public boolean equalsIgnoreCase(String anotherString)

将此 String 与另一个 String 比较,不考虑大小写。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。在忽略大小写的情况下,如果下列至少一项为 true,则认为 c1c2 这两个字符相同。

  • 这两个字符相同(使用 == 运算符进行比较)。
  • 对每个字符应用方法 Character.toUpperCase(char) 生成相同的结果。
  • 对每个字符应用方法 Character.toLowerCase(char) 生成相同的结果。

boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

测试两个字符串区域是否相等。

boolean regionMatches(int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。

boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。

boolean startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。

boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。

indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。

indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。

lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。

lastIndexOf(int ch, int fromIndex)
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。

String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。

String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。

CharSequence subSequence(int beginIndex, int endIndex)
返回一个新的字符序列,它是此序列的一个子序列。

String concat(String str)
将指定字符串连接到此字符串的结尾。

String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

String toLowerCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。

String trim()
返回字符串的副本,忽略前导空白和尾部空白。

valueOf(boolean b)
返回 boolean 参数的字符串表示形式。

String intern()
返回字符串对象的规范化表示形式。

欢迎关注我的其它发布渠道

订阅IT宅
内功修炼
Java技术栈
Java架构杂谈是IT宅精品文章公众号,欢迎订阅:
📄 网络基础知识:两万字长文50+张趣图带你领悟网络编程的内功心法 📄 HTTP发展史:三万长文50+趣图带你领悟web编程的内功心法 📄 HTTP/1.1:可扩展,可靠性,请求应答,无状态,明文传输 📄 HTTP/1.1报文详解:Method,URI,URL,消息头,消息体,状态行 📄 HTTP常用请求头大揭秘 📄 HTTPS:网络安全攻坚战 📄 HTTP/2:网络安全传输的快车道 📄 HTTP/3:让传输效率再一次起飞 📄 高性能网络编程:图解Socket核心内幕以及五大IO模型 📄 高性能网络编程:三分钟短文快速了解信号驱动式IO 📄 高性能网络编程:彻底弄懂IO复用 - IO处理杀手锏,带您深入了解select,poll,epoll 📄 高性能网络编程:异步IO:新时代的IO处理利器 📄 高性能网络编程:网络编程范式 - 高性能服务器就这么回事 📄 高性能网络编程:性能追击 - 万字长文30+图揭秘8大主流服务器程序线程模型
📄 Java内存模型:如果有人给你撕逼Java内存模型,就把这些问题甩给他 📄 一文带你彻底理解同步和锁的本质(干货) 📄 AQS与并发包中锁的通用实现 📄 ReentrantLock介绍与使用 📄 ReentrantReadWriteLock介绍与使用 📄 ReentrantLock的Condition原理解析 📄 如何优雅的中断线程 📄 如何优雅的挂起线程 📄 图解几个好玩的并发辅助工具类 📄 图解BlockingQueue阻塞队列
📄 消息队列那么多,为什么建议深入了解下RabbitMQ? 📄 高并发异步解耦利器:RocketMQ究竟强在哪里? 📄 Kafka必知必会18问:30+图带您看透Kafka
📄 洞悉MySQL底层架构:游走在缓冲与磁盘之间 📄 SQL运行内幕:从执行原理看调优的本质 📄 洞悉Redis技术内幕:缓存,数据结构,并发,集群与算法