您的位置:首页 > 绯闻

f97bbc955b6d

时间:2019-07-28

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,GB,Big5 ,UTF-8,例如:

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

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

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

与包装类类似,String类也是不可变的,也就是说,一旦创建了对象,就无法修改它。 String类也被声明为final,不能继承。内部char数组值也是final,并且在初始化后无法更改。

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

通过Arrays.copyOf方法创建一个新的字符数组,复制原始内容,然后通过new创建一个新的String。

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

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

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

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

第一次调用hashCode()时,结果将保存在哈希变量中,保存的值将在调用后直接返回

如果缓存的哈希值不为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权力乘以第一个字符的值

单独的字符串

检查匹配

字符串替换

日期归档

老葡京平台 版权所有© www.atnn2tfnzvauwnu9g.com 技术支持:老葡京平台| 网站地图