在程序中经常会用到字符串,在java中定义了String和StringBuffer两给类来封装字符串,并提供了一系列操纵字符串的方法,它们都位于java.lang包中,因此不需要导包就可以直接使用。String类是不可变类,也就是说String对象声明后,将不可修改(可以理解为字符串一旦创建就不可以修改)。
String的初始化
1.使用字符串常量直接初始化一个String|对象。
String [变量名] = "变量值";
2.使用String的构造方法初始化字符串对象
String() 创建一个内容为空的字符串
String(char[] value) 根据指定的字符数组创建对象。
String(String value) 根据指定的字符串内容创建对象
代码示例:
public class StringDemo1 {
public static void main(String [] args) {
String str1 = "sunxiaoning";//使用字符串常量直接初始化一个String|对象。
String str2 = new String();//创建一个内容为空的字符串
char ch[] = {'s','x','n'};
String str3 = new String(ch);//根据指定的字符数组创建对象。
String str4 = new String("sunxiaoning");//根据指定的字符串内容创建对象
//打印字符串
sop(str1);
sop(str2);
sop(str3);
sop(str4);
}
/*
* 打印函数
* */
public static void sop(Object obj) {
System.out.println(obj);
}
}
String的常见操作
1.获取
int length() 返回此字符串的长度
char charAt(int index) 根据位置获取位置上某个字符。
int indexOf(int ch) 返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch, int fromIndex) 从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str) 返回的是str在字符串中第一次出现的位置。
int indexOf(String str, int fromIndex) 从fromIndex指定位置开始,获取str在字符串中出现的位置。
int lastIndexOf(int ch) 返回此字符在此字符串中最后一次出现处的索引
代码演示:
public class StringDemo2 {
public static void main(String [] args) {
String str = "aabbccddeeff";
sop("字符串的长度为"+str.length());
sop("下标为5的字符是"+str.charAt(5));
sop("第一次出现c的位置是"+str.indexOf('c'));
sop("从第六个位置数,出现c的位置是"+str.indexOf('d',6));
sop("第一次出现字符串cc的位置是"+str.indexOf("dd"));
sop("最后一次出现cc的位置是"+str.lastIndexOf("cc"));
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
2.判断
boolean contains(CharSequence cs) 判断此字符串中是否包含指定的字符序列
boolean isEmpty() 判断字符中是否有内容,原理就是判断长度是否为0,当且仅当字符串长度为0时返回true
boolean startsWith(String prefix) 判断此字符串是否以指定的字符串开始
boolean endsWith(String suffix) 判断此字符串是否以指定的字符串结尾
boolean equals(Object anObject) 将此字符串与指定字符串比较,判断字符串内容是否相同,复写了Object类中的equals方法。
boolean equalsIgnoreCase(String anotherString) 判断内容是否相同,并忽略大小写。
代码示例
public class StringDemo3 {
public static void main(String []args) {
String str1 = "aaaabbbbb";
String str2 = "aabbcc";
String str3 = "aAbbcc";
sop("str1中是否包含aa"+str1.contains("aa"));
sop("Str1的长度为0吗"+str1.isEmpty());
sop("str1是以cc开头吗"+str1.startsWith("cc"));
sop("str1是以bb结尾吗"+str1.endsWith("bb"));
sop("str1的内容与str2相同吗"+str1.equals(str2));
sop("str2的内容与str3相同吗(忽略大小写)"+str2.equalsIgnoreCase(str3));
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
注意:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。而且该方法即可以判断,有可以获取出现的位置。
3.转换
将字符数组转成字符串
构造方法
String(char[])
String(char[],offset,count) 将字符数组中的一部分转成字符串。
静态方法
static String copyValueOf(char[])
static String copyValueOf(char[] data, int offset, int count)
static String valueOf(char[])
将字符串转成字符数组
-char[] toCharArray()
将字节数组转成字符串
String(byte[])
String(byte[],offset,count) 将字节数组中的一部分转成字符串
将字符串转成字节数组
byte[] getBytes()
将基本数据类型转成字符串
static String valueOf(int)
static String valueOf(double)
4.替换
String replace(oldchar,newchar) 将字符串中的oldchar替换成newchar
5.切割
String[] split(String regex) 根据参数regex将原来的字符串分割为若干子串
6.子串。获取字符串中的一部分。
String substring(int beginIndex) 返回一个新字符串,它包含字符串索引beginIndex后的所有字符。
String substring(int beginIndex,int endIndex) 返回一个新字符串,它包含此字符串中索引beginIndex到索引endindex之间的所有字符。
7.将字符串转成大写或则小写
String toUpperCase() 将字符串转成大写
String toLowerCase() 将字符串转成小写
8.将字符串两端的多个空格去除
String trim();
9.对两个字符串进行自然顺序的比较
int compareTo(string);