Java字符串操作
在Java中,把字符串当作对象处理,主要原因是Java是一种面向对象的程序设计语言。通常可以使用类String和StringBuffer的对象来表示和处理字符串。
1:创建字符串
(1):在Java中,常量字符串是用双括号括起来的一串字符,如"Hello,world!",Java编译器能自动为字符串变量生成String类型的对象。所以,可以通过一个字符串常量直接初始化一个String类型的对象。
String s = new String(“Hellow,world!”);
(2):通过Java中的String类提供的构造方法可以生成一个空字符串,字符数组,字符串对象,字符串缓冲区对象。
如 String s = new String()
Java中String类中有很多其他的构造方法,如String(byte[] bytes)通过byte数组初始化一个新的String对象,String(char[] value): 使用char类型的数组初始化一个新的字符串对象等等。
(3):StringBuffer类是字符串缓冲区,它支持对原字符串的修改,可以对字符串中任何子字符串的增加,删除,修改,并且可以合并两个字符串而不需要建立新的字符串。主要特点是支持多线程,且具有线程安全性。每一个字符串缓冲区对象都有一定的存储空间,只要字符串长度没有超出容量就无需分配新的内部缓冲区数组,如果内部空间不足则容量自动增大。
生成StringBuffer的方法有几种
1.StringBuffer();不带任何参数,初始容量为16个字符。
2.StringBuffer(int capacity);指定初始容量。
3.StringBuffer(String str);通过字符串创建字符串缓冲区对象,该对象的内容为指定字符串内容,初始容量为字符串长度加16个字符。
2:String类操作
(1):字符串连接
1.String对象之间可以直接使用"+“连接,
2.如果是基本类型则可以直接使用”+"与字符串进行连接,
3.如果是类的对象,在Java中所有的类都直接或间接的继承了Object类,其中有一个方法是toString()方法可以讲对象转换为字符串再执行连接操作。
(2):String类中的主要方法
-
public char charAt(int index) 方法,它的用途是获取字符串第index位置的字符。
如 :String str = new String("hello,world!"); char c = str.charAt(1); System.out.println(c);
此时输出便为字符串中下标为1的元素,即’e’。
-
public int length() 方法,它的用途是返回当前字符串的长度。
String str = "hello,world"; int size = str.length(); System.out.println(size);
-
public int compareTo(String anotherString) 方法,该方法用于比较字符串的大小,返回值为一个整数或0,字符串相等时返回0,比较依据是比较两个字符串从前到后的每一个字符的大小,使用的是字符的Unicode值。此方法比较字符串时不区分大小写。
-
public boolean equals(String antherString) 方法,该方法也是用于字符串的比较返回值为true或false,当且仅当两个字符串长度相同,并且其中对应的每一个字符都相等(区分大小写)时返回结果才会true。
String str1 = new String("java"); String str2 = new String("Java"); System.out.println(str1.compareTo(str1)); System.out.println(str1.equals(str2));
-
xxx.parsexxx(String str) 方法,其中xxx为你想转换为的类型,其中有两点需要注意
(1):当你转换为整型int时xxx要写成Integer。
(2):类型的首字母要大写,例如 long l = Long.parseLong(“100”)。 -
查找
int indexOf(int ch) 方法,该方法返回指定字符第一次在字符串中出现的位置,未出现返回-1
int indexOf(char ch,int fromIndex) 方法,返回指定位置之后该字符第一次出现的位置。
同理也可查自定字符串第一次出现的位置 int indexOf(String str)
也可以使用 int lastindexOf(char ch) 等等去查找指定字符,字符串最后一次出现的位置。String str = new String("hello world!"); System.out.println(str.indexOf("l")); System.out.println(str.lastIndexOf("l")); String str1 = new String("hello"); str = str + str1; System.out.println(str.indexOf(str1)); System.out.println(str.lastIndexOf(str1));
注意!,查找字符串时返回的时指定字符串第一个字符出现的位置
-
替换或修改
String类表示不变字符串,不能对其修改,但是可以重新生成一个String类的对象同时完成修改。
(1): String toLowerCase() ,该方法可以将所有字符转换为小写字符。
(2): String toUpperCase() ,该方法可以将所有字符转换为大写字符。
(3): public String replace(char oldChar,char newChar) ,该方法可以将oldChar全部替换为newChar。
(4): public Strubg replaceAll(String regex,String replacement) ,该方法可以将所有的regex字符串替换为replacement字符串
(5): public String concat(String str) ,该方法用于连接字符串。String str = new String("heLLlo World!"); System.out.println(str); //转换为小写 System.out.println(str.toLowerCase()); //转换为大写 System.out.println(str.toUpperCase()); //把L替换为a String str1 = str.replace('L','a'); System.out.println(str1); String str2 = "hello world !"; //把world替换为Java System.out.println(str2.replace("world","Java")); //连接str和str2 String str3 = str2.concat(str); System.out.println(str3);
StringBuffer类操作
StringBuffer类可以在本对象中进行增加,删除,修改,并不需要创建新的对象,这是StringBuffer类对象最大的好处,也是与String类最大的区别。String类中的方法大部分在StringBuffer中都可以使用。
-
StringBuffer类使用append()方法进行添加,添加对象可以为布尔型,字符,字符串,浮点型等等,如果添加的字符超出缓冲区长度,Java将自动扩容。
StringBuffer str = new StringBuffer("hello world!"); //返回当前已使用缓冲区长度 System.out.println(str.length()); //返回当前缓冲区的总容量 System.out.println(str.capacity()); //分割线 System.out.println("###############"); //字符串添加 str = str.append(str); System.out.println(str.length()); System.out.println(str.capacity()); System.out.println("###############"); str = str.append(str); System.out.println(str.length()); System.out.println(str.capacity());
-
StringBuffer使用insert()方法进行插入操作,可插入对象和append()方法一样,当插入字符超出缓冲区长度,Java将自动扩容。
StringBuffer str = new StringBuffer("hello world!"); System.out.println(str); //返回当前已使用缓冲区长度 System.out.println(str.length()); //返回当前缓冲区的总容量 System.out.println(str.capacity()); //分割线 System.out.println("###############"); //字符串插入指定位置 str.insert(0,"Java:"); System.out.println(str); System.out.println(str.length()); System.out.println(str.capacity()); System.out.println("###############"); str = str.insert(11,"beautiful "); System.out.println(str); System.out.println(str.length()); System.out.println(str.capacity());