文章目录
- 1.认识Sting类
- 2.String类中常用的方法
-
- 2.1字符串构造
- 2.2比较Sting对象内容是否相等
- 2.3字符串查找
-
- 2.3.1 char charAt(int index)
- 2.3.2 int indexOf()
- 2.3.3 int lastIndexOf()
- 2.4字符串转化
-
- 2.4.1数值和字符串转化
- 2.4.2大小写转换
- 2.4.3字符串转数组
- 2.5字符串连接
- 2.6字符串替换
- 2.7字符串拆分
- 2.8字符串截取
- 2.9 去掉字符串中的左右空格,保留中间空格
- 2.10判断字符串内容是否为空
- 3.字符串的不可变性
-
- 4.字符串的修改
- 5.StringBuilder和StringBuffer
-
- 5.1StringBuilder
- 5.2StringBuffer
1.认识Sting类
String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象。java把String类声明的final类,不能有子类。String类对象创建后不能修改,由0或多个字符组成。
String是引用类型,内部并不存储字符串本身,而是存了一个数组和哈希值
这个数组被final修饰所以,所以不能改变引用指向的对象,而且这个数组也被private修饰
所以不能通过下标来访问修改数组中的内容
2.String类中常用的方法
2.1字符串构造
String(array)
char[] array = {'h','e','l','l','o'};
String s = new String(array);
System.out.println(s);
输出:hellow
2.2比较Sting对象内容是否相等
boolean equals(Object anObject)
2.3字符串查找
2.3.1 char charAt(int index)
返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常
2.3.2 int indexOf()
int indexOf(int ch) //返回ch第一次出现的位置,没有返回-1
int indexOf(int ch, int fromIndex) //从fromIndex位置开始找ch第一次出现的位置,没有返回-1
int indexOf(String str) //返回str第一次出现的位置,没有返回-1
int indexOf(String str, int fromIndex) //从fromIndex位置开始找str第一次出现的位置,没有返回-1
2.3.3 int lastIndexOf()
int lastIndexOf(int ch) //从后往前找,返回ch第一次出现的位置,没有返回-1
int lastIndexOf(int ch, int fromIndex)
int lastIndexOf(String str) //从后往前找,返回str第一次出现的位置,没有返回-1
int lastIndexOf(String str, int fromIndex) //从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1
上述方法都是实例方法(对象方法)
2.4字符串转化
2.4.1数值和字符串转化
//字符串转数字
int data1 = Integer.parseInt("1234");
double data2 = Double.parseDouble("12.34");
//数字转字符串
int date3 = String.valueOf(123);
2.4.2大小写转换
public String toLowerCase()//返回将当前字符串中所有字符转换成小写后的新串
public String toUpperCase()//返回将当前字符串中所有字符转换成大写后的新串
2.4.3字符串转数组
public String toCharArray()// 字符串转数组
2.5字符串连接
public String concat(String str) // 将参数中的字符串str连接到当前字符串的后面,效果等价于"+"。
2.6字符串替换
String replace(CharSequence target, CharSequence replacement); //将所有的target替换为replacement
String replaceAll(String regex, String replacement); //替换所有的指定内容
String replaceFirst(String regex, String replacement); //替换首个内容
注:替换不是修改当前字符串,而是产生一个新的字符串
2.7字符串拆分
String[] split(String regex); //将字符串全部拆分
String[] split(String regex, int limit); //将字符串以指定的格式,拆分为limit组
注意事项:
- 字符”|“,”*“,”+”都得加上转义字符,前面加上 “” .
- 而如果是 “” ,那么就得写成 “\” .
- 如果一个字符串中有多个分隔符,可以用”|”作为连字符.
2.8字符串截取
String substring(int beginIndex); //从指定索引截取到结尾
String substring(int beginIndex, int endIndex); //截取部分内容
注:前闭后开区间的写法, substring(0, 4) 表示包含 0 号下标的字符, 不包含 4 号下标
2.9 去掉字符串中的左右空格,保留中间空格
String trim();
2.10判断字符串内容是否为空
String isEmpty();
3.字符串的不可变性
String类中的字符实际保存在内部维护的value字符数组中
- String类被final修饰,表明该类不能被继承
- value被修饰被final修饰,表明value自身的值不能改变,即不能引用其它字符数组,但是其引用空间中的内容可以修改。
所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象
4.字符串的修改
注意:尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率非常低下。
5.StringBuilder和StringBuffer
5.1StringBuilder
以下是StringBuilder类中存储的方法
StringBuff append(String str)//在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、double、float、int、long、Object、String、StringBuff的变量
char charAt(int index) //获取index位置的字符
int length() //获取字符串的长度
int capacity() //获取底层保存字符串空间总的大小
void ensureCapacity(int mininmumCapacity) //扩容
void setCharAt(int index,char ch) //将index位置的字符设置为ch
StringBuff insert(int offset, String str) //在offset位置插入:八种基类类型 & String类型 & Object类型数据
StringBuffer deleteCharAt(int index) //删除index位置字符
StringBuffer delete(int start, int end) //删除[start, end)区间内的字符
StringBuffer replace(int start, int end, String str) //将[start, end)位置的字符替换为str
String substring(int start) //从start开始一直到末尾的字符以String的方式返回
String substring(int start,int end) 将[start, end)//范围内的字符以String的方式返回
StringBuffer reverse() //反转字符串
String toString() //将所有字符按照String的方式返回
int indexOf(String str) //返回str第一次出现的位置
int indexOf(String str, int fromIndex) //从fromIndex位置开始查找str第一次出现的位置
int lastIndexOf(String str) //返回最后一次出现str的位置
int lastIndexOf(String str, int fromIndex) //从fromIndex位置开始找str最后一次出现的位置
String的内容无法修改,而StringBuilder的内容可以修改。频繁修改字符串的情况考虑使用StringBuilder。
注意:String和StringBuilder类不能直接转换。如果要想互相转换,可以采用如下原则:
-
String变为StringBuilder: 利用StringBuilder的构造方法或append()方法
-
StringBuilder变为String: 调用toString()方法
public static void main(String[] args) {
//StringBuilder转换为String
StringBuilder sb1 = new StringBuilder();
sb1.append("hello");
//String s = sb; //这个是错误的做法
//public String toString ():通过toString() 就可以实现把StringBuilder 转换为String
String s = sb1.toString();
System.out.println(s);
//String转换为StringBuilder
String ss = "hello";
//StringBuilder sb = s; //这个是错误的做法
//public StringBuilder(String s): 通过构造方法就可以实现把String 转换为StringBuilder
StringBuilder sb2 = new StringBuilder(s);
System.out.println(sb2);
}
5.2StringBuffer
用于多线程
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net