字符串是一个特殊包装类,其引用是存放在栈里的,而对象内容必须根据创建方式不同定(常量池和堆).有的是编译期就已经创建好,存放在字符串常 量池中,而有的是运行时才被创建.使用new关键字,存放在堆中。
这篇博客就整理一下看视频时做的笔记吧。
String对象已被final修饰,每次声明均为一个String类型的具体实例,而且不能被改变。注意是字符的值不能被改变,但是引用可以换。还有的就是本文开头的那一段了。
String常见的操作:
1,获取:
1、1 int length() 获取长度
1、2 char charAt(int index) 获取指定位上的某个字符
1、3 根据字符获取该字符在字符串中的位置(第一次出现)
int indexOf(int ch)不存在ch返回-1,可以用于判断字符是否存在
int indexOf(int ch,int index)从index位置开始查找
int indexOf(String str)找字符串
int indexOf(String str ,int index)
int lastIndexOf(int ch) 从最后面向前查找
2,判断:
2、1是否包含某一字符串: boolean contains(String str)
2、2是否有内容: boolean isEmpty()(长度是否为0)
2、3是否以指定内容开头:boolean startsWith(str)
2、4是否已指定内容结尾: boolean endsWith(str)
2、5内容是否相同:boolean equals(str)
2、6内容是否相同:boolean equalsIgnoreCase(str)
3,转换:
3、1将字符数组转成字符串: String(char [])构造函数
static String copyValueOf(char[])
static String copyValueOf(char[],int offset ,int count)
static String valueOf(char[])
3、2将字符串转换成字符数组 :char[] toCharArray();
3、3将字节数组转换成字符串: String (byte[])构造函数
String (byte [],int offset ,int count) 从指定数组中指定位置取出相应字节变成字符串
3、4将字符串转换成字节数组:byte[] getBytes();
3、5将基本数据类型转换成字符串: static String valueOf(int/double)
4,替换:String replace(oldchar,newchar)得到的是一个新字符,引用改变
5,切割 String [] split (regex) 会切出字符串
6,获得子串: String subString(begin) 从指定位置到结尾
String subString(begin,end) 包含头,不包含尾(end-1)
7,转换,去除空格,比较:
7、1转换大写或小写 :String toUpperCase();变成大写 。String toLowerCase();变成小写
7、2将字符串两端的空格删去:String trim();
7、3对两个字符串进行自然顺序比较 : int compareTo(String str)
由于String类型的值不可改变,所以用StringBuffer和StringBuilder比较多,字符缓冲区,是一个容器。这个容器的特点是:1长度可以变化;2可以直接操作多个数据类型;3最终会通过toString变成字符串。
下面整理一下StringBuffer的一些操作:
1,存储: StringBuffer append() 将制定数据作为参数,添加到已有数据结尾处,返回原来的那个容器
StringBuffer insert(index ,digit) 将数据插入到指定位置,返回原有容器
2,删除: StringBuffer delete(start ,end)包含头不包含尾;返回原有容器
StringBuffer deleteCharAt(index)删除指定位置的字符
delete(0,sb.length())此操作可以清空缓冲区
3,获取:char charAt(int index)返回字符中的单个字符
char indexOf(String str)查找字符串第一次出现的位置
int lastIndexOf(String str)
int length()
String subString(int start,int end) 返回的是字符串,而不是容器
void getChars(int srcBegin,int srcEnd,char[] dst ,int dstBgein)将缓冲区中指定的数据存储到指定数组中的指定位置
4,修改:StringBuffer replace(start,end,str) 包含头,不包含尾,返回一个容器
void setCharAt(int index,char ch) 返回为空
5,反转:StringBuffer reverse()
StringBuilder是StringBuffer的不同步形式,可以做它的不同步替换