String
知识点一:
String概述
String表示字符串,所谓字符串,就是一连串的字符,而且一旦被创建就不能改变。String存放啊与常量池中,使用privatefinalcharvalue[]来实现字符串的存储,也就是说String对象创建之后,就不能再修改此对象中存储的字符串内容,就是因为如此,才说String类型是不可变的.
String对象比较:
单独使用""引号创建的字符串都是常量,编译期就已经确定存储到常量池中;
使用newString("")创建的对象会存储到堆内存中,是运行期新创建的;
使用只包含常量的字符串连接符如"aa"+"bb"创建的也是常量,编译期就能确定,已经确定存储到常量池中;
知识点二:String常用的方法
String():初始化一个新的String对象,使其表示一个空字符序列,并不是返回空(不等于null)。
String(StringBufferbuffer):根据StringBuffer对象来创建String对象
String(StringBuilderbuilder):根据StringBuilder对象来创建String对象
charcharAt(intindex):取字符串中指定位置的字符,index从0开始计算。
Stringconcat(Stringstr):连接字符串,等同于“+”
booleancontentEquals(StringBufferbuffer):若二者包含的字符序列相同时就返回true
booleanequals(Objectobj):将该字符串与指定对象比较,若二者包含的字符序列相等返回true;
booleanequalsIgnoreCase(StringanotherString)将此String与另一个String比较,不考虑大小写
byte[]getBytes():将该字符串转换成byte数组
intindexOf(Stringstr):找出str字符串在该字符串中第一次出现的位置
intindexOf(Stringstr,intfromIndex)返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
intlastIndexOf(Stringstr)返回指定子字符串在此字符串中最后一次出现处的索引
intlength():返回当前字符串长度
Stringreplace(charoldChar,charnewChar):返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。
StringreplaceAll(Stringregex,Stringreplacement)使用给定的字符串replacement替换此字符串所有的regex字符串
booleanstartsWith(Stringprefix)测试此字符串是否以指定的前缀开始.
String[]split(Stringregex):把字符串按指定的字符串分隔开
Stringsubstring(intbeginIndex)返回一个新的字符串,从beginIndex开始截取,它是此字符串的一个子字符串
Stringsubstring(intbeginIndex,intendIndex)返回一个新字符串,它是此字符串的一个子字符串;[begin,end)
char[]toCharArray()将此字符串转换为一个新的字符数组
StringtoLowerCase()将此String中的所有字符都转换为小写
StringtoUpperCase()转成大写
staticStringvalueOf(基本类型obj):把基本类型值转成字符串
Stringtrim():忽略字符串前导空白和尾部空白
StringBuffer
知识点一:概述
概念:
StringBuffer是字符串缓冲区,是一个容器。
String与StringBuilder、StringBuffer的区别:
String是不可变类,一旦String对象被创建,包含在对象中的字符序列是不可变的,直到对象被销毁,而StringBuffer与StringBuilder对象则是可变的。
StringBuilder与StringBuffer的区别:
JDK1.5版本之后出现了StringBuilder.
StringBuffer是线程同步。StringBuilder是线程不同步。
以后开发,建议使用StringBuilder
特点:
1、长度是可变化的。
2、可以字节操作多个数据类型。
3、最终会通过toString方法变成字符串。
升级的三个因素:
1、提高效率。
2、简化书写。
3、提高安全性。
StringBuffer常用方法:
1、存储
StringBufferappend():将指定数据作为参数添加到已有数据结尾处。
StringBufferinsert(index,数据):可以将数据插入到指定index位置。
2、删除
StringBufferdelete(start,end):删除缓冲区中的数据,包含start,不包含end。
//清空缓冲区。sb.delete(0,sb.length());
StringBufferdeleteCharAt(index):删除指定位置的字符。
3、获取
charcharAt(intindex)
intindexOf(Stringstr)
intlastIndexOf(Stringstr)
intlength()
Stringsubstring(intstart,intend)
4、修改
StringBufferreplace(start,end,string);//用后边的字符串替换部分
voidsetCharAt(intindex,charch);//替换一个字符,不返回
5、反转
StringBufferreverse();//返回StringBuffer
6、将缓冲区中指定数据存储到指定字符数组中
voidgetChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)
知识点二:
StringBuffer是一个容器,共用一个缓冲区。即共用一个面盆。
代码表现如下:
StringBuffer str1 = new StringBuffer();StringBuffer str2 = new StringBuffer();str1 = str2.append("avba");String ss1 = str1.toString();
最终会通过toString方法变成字符串。没有就会报错
String ss2 = str2.toString();System.out.println(ss1);System.out.println(ss2);
输出结果:avba
avba
知识点三:字符串常见转换
1、将字符数组转成字符串。
形式1:构造函数:String(char[])
String(char[],offset,count):将字符数组中的一部分转成字符串。
代码:
public static void main(String ar[]){char[] arr = {'a','b','c','d','e','f'};String s1= new String(arr);String s2= new String(arr,1,3);sop("s="+s1);sop("s="+s2);}
形式2:
静态方法:
static String copyValueOf(char[]);static String copyValueOf(char[] data, int offset, int count) static String valueOf(char[]):
2、将字符串转成字符数组
char[]toCharArray():
例如:Strings4="zxcvbnm";
char[]ch=s4.toCharArray();
3、将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
4、将字符串转成字节数组。
byte[]getBytes():
5、将基本数据类型转成字符串。
staticStringvalueOf(int)
staticStringvalueOf(double)
3+""效果等同于String.valueOf(3)返回字符串3
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。