1.1.1使用字符串常量直接初始化一个String对象
String str="abc";
1.1.2使用String的构造方法初始化字符串对象,String类的构造方法如下:
方法声明 | 功能描述 |
---|---|
String() | 创建一个内容为空的字符串 |
String(String value) | 根据指定的字符串内容创建对象 |
String(char[] value) | 根据指定的字符数组创建对象 |
例:
public class Main{ public static void main(String[] args) { //创建空的字符串 String s1 = new String(); //创建内容为asdf的字符串 String s2=new String("asdf"); //创建内容为字符数组的字符串 char[] charArray=new char[]{'z','x','c'}; String s3 = new String(charArray); System.out.println("qwe"+s1); System.out.println(s2); System.out.println(s3); } }
方法声明 | |
---|---|
int indexOf(int ch) | 返回指定字符在此字符串中第一次出现处的索引 |
int lastindexOf(int ch) | 返回指定字符在此字符串中最后一次出现处的索引 |
int indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引 |
int lastIndexOf(String str) | 返回指定子字符串在此字符串中最后一次出现处的索引 |
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中的所有字符都转换为大写 |
static String valueOf(int i) | 返回 int 参数的字符串表示形式 |
char toCharArray() | 将此字符串转换为一个字符数组 |
String replace(CharSequence oldstr,CharSequence newstr) | 返回一个新的字符串,它是通过用newstr替换此字符串中出现的所有oldstr得到的 |
String[] split(String regex) | 根据参数regex将原来的字符串分割为若干个子字符串 |
String substring(int beginIndex) | 返回一一个新字符串,它包含从指定的beginIndex处开始直到此字符串末尾的所有字符 |
String substring(int beginIndex, int endIndex) | 返回 一个新字符串,它包含从指定的beginIndex处开始直到索引endIndex-1处的所有字符 |
String trim() | 返回一个新字符串,它去除了原字符串首尾的空格 |
由于字符串是常量,因此一旦创建, 其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。为了便于对字符串进行修改,在JDK中提供了一个StingBuffer类(也称字符串缓冲区)。StringBuffer 类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。
针对添加和删除字符的操作,String类提供了一系列的方法, 具体如表所示。
Stringuffer 类常用方法
功能描述 | 方法声明 |
---|---|
StringBuffer append(char c) | 添加参数到StringBuffer 对象中 |
StringBuffer insert(int offset,String str) | 将字符串中的offset位置插入字符串str |
StringBuffer deleteCharAt(int index) | 移除此序列指定位置的字符 |
StringBuffer delete(int start,int end) | 删除StringBuffer对象中指定范围的字符或字符串序列 |
StringBuffer replace(int start,int end,String s) | 在StringBuffer对象中替换指定的字符或字符串序列 |
void setCharAt(int index, char ch) | 修改指定位置index处的字符序列 |
String toString() | 返回StringBuffer缓冲区中的字符串 |
StringBuffer reverse() | 将此字符序列用其反转形式取代 |
StringBuffer类的很多方法里面,append() 和insert() 方法是最常用的,并且这两个方法有很多重载形式,它们都用于添加字符。不同的是,append(方法始终将这些字符添加到缓冲区的末尾,而insert()方法则可以在指定的位置添加字符。delete() 方 法用于删除指定位置的字符,setCharAt() 和 replace() 方法用于替换指定位置的字符。
StringBuffer 类和String类有很多相似之处,初学者在使用时很容易混淆。接下来针对这两个类进行对比,简单归纳一下两者的不同,具体如下。
①String 类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可。但是如果需要对字符串中的字符进行增删操作,则使StringBuffer类。
②Sting 类覆盖了Object 类的equals()方法, 而StringBuffer 类没有覆盖Object 类的equals()方法, 具体示例如下。
String s1= new String("abc"); String s2 = new String("abc"); System. out.println(s1.equals(s2)); //打印结果为true StringBuffer sb1 = new StringBuffer("abc"); StringBuffer sb2 = new StringBuffer("abc"); System.out.println(sb1.equals(sb2)); //打印结果为false
③String 类对象可以用操作符“+” 进行连接,而StringBuffer 类对象之间不能,具体示例如下。
String s1 = "a"; String s2 = "b"; String s3 = s1+s2; //合法 System.out.println(s3); //打印输出ab StringBuffer sb1 = new StringBuffer("abc"); StringBuffer sb2 = new StringBuffer("abc"); StringBuffer sb3 = sb1+sb2;//编译出错