[Java核心技术]-字符串类

java字符串

Java中有个类叫做String类

java.lang public final class String extends Object 
implements java.io.Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc{}

该String类代表字符串。 在Java程序中,如所有字符串文字"abc" ,实现为这个类的实例。

字符串是常量; 创建文件后,它们的值不能改变。 字符串缓冲区支持可变的字符串。 因为字符串对象是不可变的,他们可以共享。 例如:

String str = "abc";

相当于:

char data[] = {'a', 'b', 'c'};
String str = new String(data);

下面是字符串如何使用一些例子:

System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2, 3);
String d = cde.substring(1, 2);

类String包括用于检查序列的单个字符,比较字符串,搜索字符串,提取字符串,以及创建与转换为大写或小写所有字符的复制方法。 案例映射基于由指定的Unicode标准版本Character类。

Java语言提供对字符串连接运算符(+)的特殊支持,以及对其他对象的字符串转换。 有关字符串串联和转换的更多信息,请参见Java™语言规范 。

除非另有说明,传递一个null参数构造函数或方法在这个类会导致NullPointerException被抛出。


字符串的比较

下面来看几个代码

String s1 = "这是一个字符串";
String s2 = "这是一个字符串";

System.out.println(s1 == s2);//true
System.out.println(s1.equals(s2));//true
String s3 = new String("这是一个字符串");
String s4 = new String("这是一个字符串");

System.out.println(s3 == s4);//false
System.out.println(s3.equals(s4));//true
String str = "字符串";
String s5 = "这是一个" + str;
String s6 = "这是一个" + str;

System.out.println(s5 == s6);//false
System.out.println(s5.equals(s6));//true
String s7 = "这是一个" + "字符串";
String s8 = "这是一个字符串";

System.out.println(s7 == s8);//true
System.out.println(s7.equals(s8));//true
String s9 = "这是一个" + str; //str = "字符串"
String s10 = "这是一个字符串";

System.out.println(s9 == s10);//false
System.out.println(s9.equals(s10));//true

字符串一些常用的Api

public boolean isEmpty()

返回true当且仅当, length()为0 。

返回:
true如果length()是0 ,否则false


public char charAt(int index)

返回字符串指定下标的字符

参数:
index-该指数char值。
返回:
指定下标的char字符
抛出:
IndexOutOfBoundsException -如果index参数大于该字符串的长度负或小。


public byte[] getBytes(Charset charset)

编码该String成使用给定的字节序列的字符集 ,并将结果存储到一个新的字节数组。
这个方法总是会替换错误输入和不可映射的字符序列与此charset默认替换字节数组。 所述java.nio.charset.CharsetEncoder当需要在编码处理更多的控制类应当被使用。

参数:
charset - 的字符集被用于编码String (为空表示使用默认的字符集)
返回:
将得到的字节数组


public int compareTo(String anotherString)

长度相同:
从第一位开始比较,如果相同返回0,如果不同则马上返回这两个字符的ascii值的差值。

长度不同:
直接返回长度差值。

值0
如果参数字符串等于该字符串;

参数:
anotherString -用来比较的字符串
返回:
返回比较结果
抛出:
NullPointerException -如果指定对象为null
ClassCastException -如果指定对象的类型阻止其相对于该对象。


public boolean startsWith(String prefix, int toffset)

查询是不是以 字符串prefix 开头

参数:
prefix - 前缀。
Toffset - 从哪里开始寻找这个字符串。
返回:
如果是 返回true 否则false


public boolean endsWith(String suffix)

此字符串是否以指定的后缀结束测试。

参数:
后缀 - 后缀。
返回:
如果是 返回true 否则false


public int indexOf(String str)

返回此字符串的指定子第一次出现处的索引。

参数:
str - 要搜索的字符串
返回:
指定的字符串的第一个出现的索引,找不到返回-1


public int lastIndexOf(String str)

返回此字符串指定子字符串最后一次出现处的索引。

参数:
str - 要搜索的字符串
返回:
指定的字符串的第一个出现的索引,找不到返回-1


public String substring(int beginIndex,int endIndex)

截取一个字符串的开始下标 到 结束下标
并且创建一个新的字符串返回

参数:
beginIndex - 开始索引
endIndex的 - 结束索引 -如果这里不写默认到结尾
返回:
指定的字符串。
抛出:
IndexOutOfBoundsException - 如果beginIndex为负,或者endIndex大于字符串长度,或beginIndex大于endIndex 。


public String replace(char oldChar,char newChar)

替换字符串里面的内容

参数:
oldChar - 旧符。
newChar - 新字符。
返回:
替换后的字符串


public String replaceAll(String regex,String replacement)

替换正则表达式匹配到的字符串。

参数:
regex- 正则表达式到该字符串是否要被匹配
replacement - 字符串被替换为每个匹配
返回:
得到的String
抛出:
PatternSyntaxException -如果正则表达式的语法无效


public String[] split(String regex,int limit)

将正则表达式匹配到的字符串返回一个字符串数组

参数:
regex - 定界正则表达式
limit - 限制 如果不写表示没有限制
返回:
正则表达式匹配的字符串的数组
抛出:
PatternSyntaxException -如果正则表达式的语法无效


public static String join(CharSequence delimiter, CharSequence... elements)

返回一个有分隔符组成的字符串
例如:

String message = String.join("-", "Java", "is", "cool");
// message: "Java-is-cool"

需要注意的是,如果一个元素为null,则"null"加入。

PARAMS:
delimiter - 分隔符
elements - 要加入的元素
返回:
一个新的String ,其组成的elements分离用delimiter
抛出:
NullPointerException -如果delimiter或elements是null


public String toLowerCase()

将大写字母转换为小写
返回:
将字母转换成小写的字符串


public String toUpperCase()

将字母转换成大写
返回:
将字母转换成大写的字符串


public String trim()

删除收尾空白字符

返回:
删除收尾空白字符之后的字符串

发布了56 篇原创文章 · 获赞 52 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_18604209/article/details/104295645
今日推荐