千亿国际网址

首页 > 正文

《Java编程的逻辑》笔记29--剖析String

www.forthamiltonfamilyhousing.com2019-07-25
千亿国际娱乐手机官网

29. String.png剖析

输出是:老马说编程,探索编程的本质

确定字符串是否为空

获取字符串的长度

拿一个子串

在字符串中查找字符或子字符串,返回找到的第一个索引位置,并且找不到返回-1

从后面查找字符或子字符串,从后面返回第一个索引位置,找不到返回-1

确定字符串是否包含指定的字符序列。回想一下,CharSequence是一个接口,String也实现了CharSequence

确定字符串是否以给定字符串开头

确定字符串是否以给定字符串结尾

与其他字符串比较以查看内容是否相同

忽略大小写,与其他字符串比较,查看内容是否相同

String还实现了Comparable接口,可以比较字符串大小

您也可以忽略大小写并比较大小

将所有字符转换为大写字符,返回新字符串,原始字符串不会更改

将所有字符转换为小写字符,返回新字符串,原始字符串不会更改

字符串连接,返回当前字符串和参数字符串的合并字符串,原始字符串不变

字符串替换,替换单个字符,返回新字符串,原始字符串不变

字符串替换,替换字符序列,返回一个新字符串,原始字符串不变

删除前导和尾随空格,返回一个新字符串,原始字符串不会更改

分离字符串,返回分离的子字符串数组,原始字符串不变

例如,用逗号分隔'hello,world':

Arr [0]是'你好'而arr [1]是'世界'。

包字符数组

String类在内部使用字符数组来表示字符串。实例变量定义为:

String有两个构造函数,可以根据char数组创建一个String

返回指定索引位置的char

返回与字符串

对应的char数组

将char数组中指定的字符范围复制到目标数组的指定位置

按代码点处理字符

与Character类似,String类还提供了在Code Point中处理字符串的方法。

代码转换

Java使用Charset类来表示各种编码。它有两种常见的静态方法:

第一种方法返回系?车哪媳嗦搿@纾谖业募扑慊希葱幸韵掠锞洌?

输出为UTF-8

第二种方法返回给定编码名称的Charset对象,对应于我们在第6节中介绍的编码,其charset名称可以是: US-ASCII,ISO-8859-1,windows-1252,GB2312,GBK,GB18030,Big5 ,UTF-8,例如:

String类提供以下方法,返回字符串由给定编码的字节表示:

第一种方法没有编码参数,使用系统默认编码,第二种方法参数是编码名称,第三种方法是Charset。

String类具有如下的构造函数:基于字节和编码创建字符串,即,基于给定编码的字节表示创建Java的内部表示形式。

与包装类类似,字符串类也是不可变的,也就是说,一旦创建了对象,就没有办法修改它。字符串类也声明为final,不能继承。内部char数组值也是最终值,初始化后不能更改。

String类提供了许多看似修改过的方法,这些方法实际上是通过创建一个新的String对象来实现的。原始字符串对象将不会被修改。例如,让我们看看concat()方法的代码:

通过array.copy of方法创建一个新的字符数组,复制原始内容,然后通过new创建一个新字符串。

与包装类(定义为不可变类)类似,程序可以更简单、更安全、更容易理解。但是,如果您经常更改字符串,并且每次修改一个新的字符串,那么性能就太低了。此时,您应该考虑Java、StringBuilder和StringBuffer中的其他两个类。我们将在下一节介绍它们。

它就像一个字符串对象,可以直接调用字符串的各种方法

使用常量形式的字符串时,将使用常量池中类型为string的相应对象。

通过常量直接赋值返回true,但通过new,==将不返回true

第一次调用hashcode()时,结果将保存在hash变量中,并在调用后直接返回保存的值。

如果缓存的哈希值不为0,则将直接返回。否则,根据字符数组的内容计算散列。计算方法是:s [0] 31 ^(n-1)+ s [1] 31 ^(n-2)+ . + s [n-1] s表示一个字符串,s [0]表示第一个字符,n表示字符串的长度,s [0] * 31 ^(n-1)表示31的n-1权力乘以第一个字符的值

单独的字符串

检查匹配

字符串替换

热门浏览
热门排行榜
热门标签
日期归档