更新时间:2020-01-08 来源:黑马程序员 浏览量:
在应用程序中经常会用到字符串,所谓字符串就是指一连串的字符,它是由许多单个字符连接而成的,如多个英文字母所组成的一个英文单词。字符串中可以包含任意字符,这些字符必须包含在一对双引号“”之内,例如“ab”。在Java中定义了String和StringBuffer两个类来封装字符串,并提供了一系列操作字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用。下面我们详细介绍String类。
String类的初始化
在操作String类之前,首先需要对String类进行初始化,在Java中可以通过以下两种方式对 String类进行初始化,具体如下。
1. 使用字符串常量直接初始化一个String对象,具体代码如下:
String strl="abc";
由于String类比较常用,所以提供了这种简化的语法,用于创建并初始化String对象,其中“abc”表示一个字符串常量。
2. 使用String的构造方法初始化字符串对象,String类的构造方法下表所示。
方法声明 |
功能描述 |
String() |
创建一个内容为空的字符串 |
String(char[] vaule) |
根据指定的字符组创建对象 |
String(String value) |
根据指定的字符串内容创建对象 |
上面表中列出了String类的三种构造方法,通过调用不同参数的构造方法便可完成String类的初始化。接下来通过一个案例来演示。
public class string01 {
public static void main(String[] args) throws Exception {
//创建一个空对象、
String str1=new String();
//创建一个内容为abcd的字符串
String str2=new String("abcd");
//创建一个内容为字符数组的字符串
char[] charArray=new char[]{'D','E','F'};
String str3=new String(charArray);
System.out.println("a"+str1+"b");
System.out.println(str2);
System.out.println(str3);
}
}
运行结果:
String类的常见操作汇总
String类在实际开发中的应用非常广泛,因此灵活地使用String类是非常中要的。下面我们介绍String类常用类的一些方法。
int indexOf(int ch)
功能:返回指定字符在此字符串中第一次出现处的索引
int lastIndexOf(int ch)
功能:返回指定字符在此字符串中最后一次出现处的索引
char charAt(int index)
功能:返回字符串中index位置上的字符,其中index的取值范围是:0~(字符串长度-1)
boolean endsWith(String suffix)
功能:判断此字符串是否以指定的字符串结尾
int length()
功能:返回此字符串的长度
boolean equals(Object anObject)
功能:将此字符串与指定的字符串比较
boolean isEmpty()
功能:当且仅当字符串长度为0时返回true
boolean startsWith(String prefix)
功能:判断此字符串是否以指定的字符串开始
boolean contains(CharSequence cs)
功能:判断此字符申中是否包含指定的字符序列
String toLowerCase()
功能:使用默认语言环境的规则将String中的所有字符都转换为小写
String toUpperCase()
功能:使用默认语言环境的规则将String中的所有字符都转换为大写
String valueOf(int i)
功能:返回int参数的字符表现形式
char[] toCharArray()
功能:将此字符串转化为一个字符数组
String repalce(CharSequence oldstr,CharSequence newstr)
功能:返回一个新的字符串,它是通过用newstr替换此字符串中出现的所有oldstr得到的
String[] split(String regex)
功能:根据参数regex将原来的字符串分割为若干个子字符串
String substring(int beginIndex)
功能:返回一个新字符串,它包含字符串中索引beginIndex后的所有字符
String substring(int beginIndex,int endIndex)
功能:返回一个新字符串,它包含此字符串中从索引beginIndex到索引endIndex之间的所有字符。
String trim()
功能:返回一个新字符串,它去除了原字符串首尾的空格
上面我们列出了String类的常见方法,其中有些方法无法通过描述解释清楚,下面我们就通过实例来具体学习。
1、字符串的基本操作
在程序中,需要对字符串进行一些基本操作,如获得字符串长度、获得指定位置的字符等。 String类针对每一个操作都提供了对应的方法,接下来通过一个案例来学习下这些方法的使用。
public class string02 {
public static void main(String[] args) {
String s="abcdedcba"; //声明字符串
System.out.print("字符串的长度为:"+s.length()); //获取字符串的长度,即字符个数
System.out.println("字符串中第一个字符:"+s.charAt(0));
System.out.println("字符c第一次出现的位置:"+s.indexOf('c'));
System.out.println("字符c最后一次出现的位置:"+s.lastIndexOf('c'));
}
}
运行结果如下:
2、字符串的转换操作
程序开发中,经常需要对字符串进行转换操作,例如将字符串转换成数组的形式,将字符串中的字符进行大小写转换等。接下来通过一个案例来演示字符串的转换操作。
public class string03 {
public static void main(String[] args) {
String str="abcd";
System.out.print("将字符串转为字符串数组的结果");
char[] charArray=str.toCharArray(); //字符串转为字符组
for(int i=0;i<charArray.length;i++){
if (i !=charArray.length-1){
//如果不是数组的最后一个元素,在元素后面加逗号
System.out.print(charArray[i]+",");
}else{
//数组的最后一个元素后面不加逗号
System.out.println(charArray[i]);
}
}
System.out.println("将int值转为String类型之后的结果"+String.valueOf(12));
System.out.println("将字符转换成大写之后的结果"+str.toUpperCase());
}
}
运行结果如下:
在上面例子中,使用String类的toCharArray()方法将一个字符串转为一个字符数组,静态方法 valueOf()将一个int类型的整数转为字符串,toUpperCase()方法将字符串中的字符都转为大写。其中valueOf()方法有很多重载的形式,float、double、char等其他基本类型的数据都可以通过该方法转为String字符串类型。
3、字符串的替换和去除空格的方法
程序开发中,用户输入数据时经常会有一些错误和空格,这时可以使用String类的replace()和trim()方法,进行字符串的替换和去除空格操作,接下来通过一个案例来介绍。
public class string04 {
public static void main(String[] args) {
String s="itcast";
//字符串替换操作
System.out.println("将it替换成cn.it的结果:"+s.replace("it","cn.it"));
//去除字符串空格操作
String s1=" i t c a s t ";
System.out.println("去除字符串中两端的空格后的结果:"+s1.trim());
System.out.println("去除字符串所空格的结果:"+s1.replace(" ",""));
}
}
运行结果为:
上面案例中调用了String类的两个方法,其中replace()方法用于将字符串中所有与指定字符串匹配的子串替换成另一个字符串,trim()方法用于去除字符串中的空格。需要注意的是,该方法只能去除两端的空格,不能去除中间的空格。若想去除字符串中间的空格,则可以调用String类的 replace()方法。
4、字符串的判断操作
操作字符串时,经常需要对字符串进行一些判断,如判断字符串是否以指定的字符串开始、结束,是否包含指定的字符串,字符串是否为空等。在String类中针对字符串的判断操作提供了很多方法,接下来通过一个案例来学习。
public class string05_1 {
public static void main(String[] args) {
String s1="String";
String s2="Str";
System.out.println("判断是否以字符串str开头:"+s1.startsWith("Str"));
System.out.println("判断是否以字符串ng结尾:"+s1.endsWith("ng"));
System.out.println("判断是否以包含字符串tri:"+s1.contains("tri"));
System.out.println("判断字符串是否为空:"+s1.isEmpty());
System.out.println("判断两个字符串是否相等:"+s1.equals("s2"));
}
}
运行结果如下:
上面案例中涉及到的方法都是用于判断字符串的,并且返回值均为boolean类型。其中,equals()方法比较重要,该方法将父类Object中equals()方法进行了重写。在程序中可以通过和equals()两种方式对字符串进行比较,但这两种方式有明显的区别。equals()方法用于比较两个字符串中的字符是否相等,==方法用于比较两个字符串对象的地址是否相同。对于两个字符串对象,当它们的字符内容完全相同时,使用equals判断结果会为true,但使用==判断时,结果一定为false。为了便于理解,下面给出示例代码:
public class string05_2 {
public static void main(String[] args) {
String str1=new String("abc");
String str2=new String("abc");
System.out.println(str1==str2); //结果为false,因为str1和str2是两个对象
System.out.println(str1.equals(str2)); //结果为true,应为str1和str2字符内容相同
}
}
运行结果为:
5、字符串的截取和分隔
在String类中针对字符串的截取和分割操作提供了两个方法,其中,substring()方法用于截取字符串的一部分,split()方法可以将字符串按照某个字符进行分割。接下来通过一个案例来学习。
public class string06 {
public static void main(String[] args) {
String str="羽毛球-篮球-乒乓球";
//下面是字符串截取操作
System.out.println("从第5个字符截取到末尾的结果:"+str.substring(4));
System.out.println("从第5个字符截取到第6个字符的结果:"+str.substring(4,6));
//下面是字符分隔操作
System.out.print("分隔后的字符串数组中的元素一次为:");
String[] strArray=str.split("-"); //将字符串转换为字符串数组
for (int i=0;i<strArray.length;i++){
if (i !=strArray.length-1) {
//如果不是数组最后一个元素,在元后面加逗号
System.out.print(strArray[i]+",");
} else {
//数组的最后一个元素后面不加逗号
System.out.println(strArray[i]);
}
}
}
}
运行结果为:
上面案例中。调用了String类中重载的两个substring()方法。在第5行代码调用substring()方法时,传入参数4,即截取字符串中第5个字符以及之后的所有字符,因为字符串中的字符,索引是从0开始的。第6行代码调用substring()方法时传入两个参数4和6,即截取第5个和第6个字符,因为字符串在截取时,只包括开始索引,不包括结束索引。上面案例中的第9~18行演示了split()方法的用法,该方法会根据指定的符号将字符串分割成三部分,并存放到一个String类型的数组当中。
String宇符串在获取某个字符时,会用到字符的索引,当访问字符串中的字符时,如果字符的索引不存在,则会发生StringIndexOutOfBoundsException(字符串角标越界异常),接下来通过一个案例来演示。
public class string07 {
public static void main(String[] args) {
String s="abcdedsba";
System.out.println(s.charAt(9));
}
}
运行结果为:
通过运行结果可以看出,访问字符串中的字符时,不能超出字符的索引范围,否则会出现异常,这与数组中的角标越界异常非常相似。
猜你喜欢:
java培训课程
java基础教程下载