前言
字符串在Java编程中广泛的应用到,在Java中字符串属于对象,Java提供了String来创建和操作字符串。字符串可以分为两个部分,字符和字符串。
字符的介绍
Java用char类型来表示字母、数字、标点符号以及其他特殊字符。Java基于Unicode4.0来表示每一个字符,Unicode的设计目标是容纳世界上所有主要语言中的字符。
Java使用16位即2个字节来表示字符,这意味着Java可以表示216,即65536个字符,看起来很多,但是还不能支持整个Unicode标准中的所有字符。如果超过这个范围,Java允许使用int类型来表示字符,int类型字长4个字节32位,可以表示232位的字符。
Java中表示字符的最简单的方式如下,使用单引号嵌入字符:
char capitalA = 'A';
字符从本质上讲是数字。每一个字符映射到一个范围在0到65535的正整数,每一个字符在Unicode标准中都有对应的数字值,称为Unicode值。我们可以用如下方法来查看字符的Unicode码:
char word = 'A';
int p = 65;
System.out.println("a在unicode表中的顺序位置是:" + (int) word);
System.out.println("unicode表中的第65位是:" + (char) p);
并不是所有的字符都可以通过键盘输入到计算机。我们可以用Unicode转义符(\u或者\U,后面跟着四位的十六进制数字)来表示Unicode字符,方法如下面所示:
char word = '\U0041'
特殊字符
Java定义了一些用来格式化输出的特殊字符。Java使用转义符来表示这些特殊字符,该转义符由一个反斜线(\)和一个随后的助记符组成:
回车 '\r'
换行 '\n'
Tab '\t'
换页 '\f'
退格 '\b'
由于一对单引号和反斜线对于字符表示有特殊的意义,所以您必须用转义符来表示它们。
单引号 '\'
换码符 '\\'
注意:双引号不需要转义。
字符串(String)
接下来我们进入正题:字符串对象表示固定长度的字符序列,String类可能是Java程序中使用的最频繁的类了。
字符串的创建方式
创建字符串的方式有两种:
String a = "abc";
String b = new String("abc");
实际编程中,我们要避免第二种字符串创建方式,因为第二种方式创建了两个String对象。首先,Java虚拟机创建了String对象“abc”。然后,java虚拟机创建一个新的String对象,并把字符串“abc”传入构造函数。这是一次完全没有必要的构造,既影响了性能,也提高了代码阅读难度。
由于字符串是字符序列,所以可以嵌入特殊字符。
String s = "\t\n";
字符串常用方法
字符串查找
String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法。
1 indexOf(String str)
该方法用于返回参数字符串s在指定字符串中首次出现的索引位置,当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法返回-1。
String str ="We are students";
int size = str.indexOf("a"); // 变量size的值是3
2 lastIndexOf(String str)
该方法用于返回字符串最后一次出现的索引位置。当调用字符串的lastIndexOf()方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回-1.
如果lastIndexOf方法中的参数是空字符串"" ,则返回的结果与length方法的返回结果相同。
获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回。
String str = "hello word";
char mychar = str.charAt(5); // mychar的结果是w
获取子字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,且应明确字符串下标是从0开始的。在字符串中空格占用一个索引位置。
1、substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取知道该字符串结尾的子串。
String str = "Hello word";
String substr = str.substring(3);
//获取字符串,此时substr值为lo word
2、substring(int beginIndex, int endIndex)
参数:beginIndex : 开始截取子字符串的索引位置。
参数:endIndex:子字符串在整个字符串中的结束位置。
String str = "Hello word";
String substr = str.substring(0,3); //substr的值为hel
去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。
字符串替换
replace():可实现将指定的字符或字符串替换成新的字符或字符串;
参数oldChar:要替换的字符或字符串;
参数newChar:用于替换原来字符串的内容。
如果要替换的字符oldChar在字符串中重复出现多次,replace()方法会将所有oldChar全部替换成newChar。需要注意的是,要替换的字符oldChar的大小写要与原字符串中字符的大小写保持一致。
String str= "address";
String newstr = str.replace("a", "A");// newstr的值为Address
判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。
1、startsWith(String prefix)
该方法用于判断当前字符串对象的前缀是否是参数指定的字符串。
2、endsWith(String suffix)
该方法用于判断当前字符串是否以给定的子字符串结束。
判断字符串是否相等
1、equals(String otherstr)
如果两个字符串具有相同的字符和长度,则使用equals()方法比较时,返回true。同时equals()方法比较时区分大小写。
2. equalsIgnoreCase(String otherstr)
equalsIgnoreCase()方法与equals()类型,不过在比较时忽略了大小写。
按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0.
str.compareTo(String otherstr);
字母大小写转换
字符串的toLowerCase()方法可将字符串中的所有字符从大写字母改写为小写字母,而tuUpperCase()方法可将字符串中的小写字母改写为大写字母。
str.toLowerCase();
str.toUpperCase();
字符串切割
使用split()方法可以使字符串按指定的分隔字符或字符串对内容进行分割,并将分割后的结果存放在字符数组中。
str.split(String sign);
sign为分割字符串的分割符,也可以使用正则表达式。
没有统一的对字符串进行分割的符号,如果想定义多个分割符,可使用符号“|”。例如,“,|=”表示分割符分别为“,”和“=”。
str.split(String sign, in limit);
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。
总结
Java的String类是使用Java开发的每一个小伙伴都应该掌握的,因为我们的编程离不开字符串。希望对学习和使用Java语言开发的小伙伴有帮助。